bug fix
authorbdemsky <bdemsky>
Tue, 22 Sep 2009 19:15:11 +0000 (19:15 +0000)
committerbdemsky <bdemsky>
Tue, 22 Sep 2009 19:15:11 +0000 (19:15 +0000)
Robust/src/Runtime/DSTM/interface/dstmserver.c
Robust/src/Runtime/DSTM/interface/queue.c
Robust/src/Runtime/DSTM/interface/trans.c

index edfbb4e8c2ced0a8649002593698333ca6e2a3c0..0cb3490d2e74c5342e3252120fa73a8ca11fda52 100644 (file)
@@ -747,7 +747,6 @@ int prefetchReq(int acceptfd, struct readstruct * readbuffer) {
   objheader_t *header;
   oidmidpair_t oidmid;
   int sd = -1;
-
   while(1) {
     recv_data_buf((int)acceptfd, readbuffer, &numoffset, sizeof(int));
     if(numoffset == -1)
@@ -840,7 +839,6 @@ int prefetchReq(int acceptfd, struct readstruct * readbuffer) {
     //Release socket
   if (mid!=-1)
     freeSockWithLock(transPResponseSocketPool, mid, sd);
-
   return 0;
 }
 
index 8ebff8088ffaf771ff9503740297fc88f417b6a6..41e44033d88f64d033fdd7dbbf22f9735e825798 100644 (file)
@@ -8,12 +8,16 @@ pthread_cond_t qcond;
 
 #define QSIZE 2048 //2 KB
 
+#ifdef LOGEVENTS
 extern char bigarray[16*1024*1024];
 extern int bigindex;
 #define LOGEVENT(x) { \
     int tmp=bigindex++;                                \
     bigarray[tmp]=x;                           \
   }
+#else
+#define LOGEVENT(x)
+#endif
 
 void queueInit(void) {
   /* Intitialize primary queue */
index 36465abb341c58df559316fe8dcff1df182f0115..2db0e84c6b8bb87ee0e1ab8e37f1444f5b4bfd10 100644 (file)
@@ -79,13 +79,16 @@ void printhex(unsigned char *, int);
 plistnode_t *createPiles();
 plistnode_t *sortPiles(plistnode_t *pileptr);
 
+#ifdef LOGEVENTS
 char bigarray[16*1024*1024];
 int bigindex=0;
 #define LOGEVENT(x) { \
     int tmp=bigindex++;                                \
     bigarray[tmp]=x;                           \
   }
-
+#else
+#define LOGEVENT(x)
+#endif
 
 /*******************************
 * Send and Recv function calls
@@ -106,9 +109,43 @@ void send_data(int fd, void *buf, int buflen) {
   }
 }
 
+void recv_dataz(int fd, void *buf, int buflen) {
+  char *buffer = (char *)(buf);
+  int size = buflen;
+  int numbytes;
+  while (size > 0) {
+    numbytes = recv(fd, buffer, size, 0);
+    bytesRecv = bytesRecv + numbytes;
+    if (numbytes == -1) {
+      perror("recv");
+      exit(0);
+    }
+    buffer += numbytes;
+    size -= numbytes;
+  }
+}
+
+int recv_data_errorcodez(int fd, void *buf, int buflen) {
+  char *buffer = (char *)(buf);
+  int size = buflen;
+  int numbytes;
+  while (size > 0) {
+    numbytes = recv(fd, buffer, size, 0);
+    if (numbytes==0)
+      return 0;
+    if (numbytes == -1) {
+      perror("recv");
+      return -1;
+    }
+    buffer += numbytes;
+    size -= numbytes;
+  }
+  return 1;
+}
+
+
 void recv_data_buf(int fd, struct readstruct * readbuffer, void *buffer, int buflen) {
   char *buf=(char *)buffer;
-
   int numbytes=readbuffer->head-readbuffer->tail;
   if (numbytes>buflen)
     numbytes=buflen;
@@ -117,13 +154,12 @@ void recv_data_buf(int fd, struct readstruct * readbuffer, void *buffer, int buf
     readbuffer->tail+=numbytes;
     buflen-=numbytes;
     buf+=numbytes;
-    if (buflen==0) {
-      return;
-    }
   }
-
+  if (buflen==0) {
+    return;
+  }
   if (buflen>=MAXBUF) {
-    recv_data(fd, buf, buflen);
+    recv_dataz(fd, buf, buflen);
     return;
   }
   
@@ -156,12 +192,12 @@ int recv_data_errorcode_buf(int fd, struct readstruct * readbuffer, void *buffer
     readbuffer->tail+=numbytes;
     buflen-=numbytes;
     buf+=numbytes;
-    if (buflen==0)
-      return 1;
   }
+  if (buflen==0)
+    return 1;
 
   if (buflen>=MAXBUF) {
-    return recv_data_errorcode(fd, buf, buflen);
+    return recv_data_errorcodez(fd, buf, buflen);
   }
 
   int maxbuf=MAXBUF;
@@ -784,7 +820,7 @@ int transCommit() {
   trans_commit_data_t transinfo; /* keeps track of objs locked during transaction */
   char finalResponse;
 
-#ifdef TRANSSTATS
+#ifdef LOGEVENTS
   int iii;
   for(iii=0;iii<bigindex;iii++) {
     printf("%c", bigarray[iii]);