free data structures at abort
authorbdemsky <bdemsky>
Mon, 9 Feb 2009 01:54:37 +0000 (01:54 +0000)
committerbdemsky <bdemsky>
Mon, 9 Feb 2009 01:54:37 +0000 (01:54 +0000)
check whether we should bypass commit procedure and just abort

Robust/src/Runtime/DSTM/interface/trans.c

index 135951f6e2e69345116ed6171d2ee4666384946f..5d31cc657465630838aa6d5ba98b870ac74bd43d 100644 (file)
@@ -406,6 +406,8 @@ __attribute__((pure)) objheader_t *transRead(transrecord_t *record, unsigned int
   if (record->abort) {
     //abort this transaction
     printf("ABORTING\n");
+    objstrDelete(record->cache);
+    chashDelete(record->longTable);
     _longjmp(record->aborttrans,1);
   } else
     addtransaction(oid,record);
@@ -572,6 +574,18 @@ int transCommit(transrecord_t *record) {
   trans_commit_data_t transinfo; /* keeps track of objs locked during transaction */
   char finalResponse;
 
+#ifdef ABORTREADERS
+  if (record->abort) {
+    //abort this transaction
+    printf("ABORTING TRANSACTION AT COMMIT\n");
+    objstrDelete(record->cache);
+    chashDelete(record->longTable);
+    free(record);
+    return 1;
+  }
+#endif
+
+
   do {
     trecvcount = 0;
     treplyretry = 0;