pthread_mutex_t notifymutex;
pthread_mutex_t atomicObjLock;
+/***********************************
+ * Global Variables for statistics
+ **********************************/
+extern int numTransCommit;
+extern int numTransAbort;
+
void printhex(unsigned char *, int);
plistnode_t *createPiles(transrecord_t *);
if (!master)
threadcount--;
#endif
+
+#ifdef TRANSSTATS
+ printf("Trans stats is on\n");
+ fflush(stdout);
+#endif
//Initialize socket pool
transReadSockPool = createSockPool(transReadSockPool, 2*numHostsInSystem+1);
thread_data_array_t *thread_data_array;
local_thread_data_array_t *ltdata;
int firsttime=1;
-
+
do {
treplyctrl=0;
trecvcount = 0;
} while (treplyretry);
if(treplyctrl == TRANS_ABORT) {
+#ifdef TRANSSTATS
+ ++numTransAbort;
+#endif
/* Free Resources */
objstrDelete(record->cache);
chashDelete(record->lookupTable);
free(ltdata);
return TRANS_ABORT;
} else if(treplyctrl == TRANS_COMMIT) {
+#ifdef TRANSSTATS
+ ++numTransCommit;
+#endif
/* Free Resources */
objstrDelete(record->cache);
chashDelete(record->lookupTable);
//make an entry in prefetch hash table
void *oldptr;
if((oldptr = prehashSearch(oidToPrefetch)) != NULL) {
- prehashRemove(oidToPrefetch);
- prehashInsert(oidToPrefetch, header);
+ prehashRemove(oidToPrefetch);
+ prehashInsert(oidToPrefetch, header);
} else {
- prehashInsert(oidToPrefetch, header);
+ prehashInsert(oidToPrefetch, header);
}
length = length - size;
offset += size;
return;
}
/* Invalidate objects in other machine cache */
- if((retval = invalidateObj(tdata)) != 0) {
- printf("Error: %s() in invalidating Objects %s, %d\n", __func__, __FILE__, __LINE__);
- return;
+ if(tdata->buffer->f.nummod > 0) {
+ if((retval = invalidateObj(tdata)) != 0) {
+ printf("Error: %s() in invalidating Objects %s, %d\n", __func__, __FILE__, __LINE__);
+ return;
+ }
}
} else {
/* Send Abort in soft abort case followed by retry commiting transaction again*/
} else {
oid = tdata->buffer->oidmod[i];
}
+ pthread_mutex_lock(&prefetchcache_mutex);
header = (objheader_t *) chashSearch(tdata->rec->lookupTable, oid);
//copy object into prefetch cache
GETSIZE(size, header);
- pthread_mutex_lock(&prefetchcache_mutex);
if ((newAddr = objstrAlloc(prefetchcache, (size + sizeof(objheader_t)))) == NULL) {
printf("Error: %s() objstrAlloc error for copying into prefetch cache %s, %d\n", __func__, __FILE__, __LINE__);
return -1;
buf+=sizeof(unsigned int);
*((unsigned int *)buf) = myIpAddr;
buf += sizeof(unsigned int);
- memcpy(buf, tmp->offset, tmp->numoffset*sizeof(short));
+ memcpy(buf, tmp->offset, (tmp->numoffset)*sizeof(short));
send_data(sd, oidnoffset, len);
tmp = tmp->next;
}