From: bdemsky Date: Mon, 9 Feb 2009 01:54:37 +0000 (+0000) Subject: free data structures at abort X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c1a3944a345565db6f3372a5d88a502de4258c5a;p=IRC.git free data structures at abort check whether we should bypass commit procedure and just abort --- diff --git a/Robust/src/Runtime/DSTM/interface/trans.c b/Robust/src/Runtime/DSTM/interface/trans.c index 135951f6..5d31cc65 100644 --- a/Robust/src/Runtime/DSTM/interface/trans.c +++ b/Robust/src/Runtime/DSTM/interface/trans.c @@ -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;