From: bdemsky Date: Fri, 16 Feb 2018 00:09:37 +0000 (-0800) Subject: edits X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=commitdiff_plain;h=672eac8848e8211fb5103815fa7a2a2d7713bb7b;ds=sidebyside edits --- diff --git a/version2/src/C/Table.cc b/version2/src/C/Table.cc index 1bdc259..344c62d 100644 --- a/version2/src/C/Table.cc +++ b/version2/src/C/Table.cc @@ -1649,7 +1649,13 @@ void Table::arbitrateFromServer() { } // Get the transaction sequence numbers and sort from oldest to newest - Vector *transactionSequenceNumbers = new Vector(liveTransactionBySequenceNumberTable->keySet()); + Vector *transactionSequenceNumbers = new Vector(); + { + SetIterator * trit = getKeyIterator(liveTransactionBySequenceNumberTable); + while(trit->hasNext()) + transactionSequenceNumbers->add(trit->next()); + delete trit; + } qsort(transactionSequenceNumbers->expose(), transactionSequenceNumbers->size(), sizeof(int64_t), compareInt64); // Collection of key value pairs that are @@ -1658,12 +1664,11 @@ void Table::arbitrateFromServer() { // The last transaction arbitrated on int64_t lastTransactionCommitted = -1; Hashset *generatedAborts = new Hashset(); - - for (int64_t transactionSequenceNumber : transactionSequenceNumbers) { + uint tsnSize = transactionSequenceNumbers->size(); + for(uint i=0; iget(i); Transaction *transaction = liveTransactionBySequenceNumberTable->get(transactionSequenceNumber); - - // Check if this machine arbitrates for this transaction if not // then we cant arbitrate this transaction if (transaction->getArbitrator() != localMachineId) { @@ -1688,7 +1693,7 @@ void Table::arbitrateFromServer() { // update the largest transaction seen by arbitrator from server - if (lastTransactionSeenFromMachineFromServer->get(transaction->getMachineId()) == NULL) { + if (!lastTransactionSeenFromMachineFromServer->contains(transaction->getMachineId())) { lastTransactionSeenFromMachineFromServer->put(transaction->getMachineId(), transaction->getClientLocalSequenceNumber()); } else { int64_t lastTransactionSeenFromMachine = lastTransactionSeenFromMachineFromServer->get(transaction->getMachineId());