X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=version2%2Fsrc%2FC%2FCommit.cc;h=601973286131df8d54936259ba8bc2f1e9418648;hb=e9b05be069860b5a810b55b30ae07c2ce48af407;hp=34d51dcffba610182c03835b82dedd79ddaa6a6d;hpb=4ab169190962b318562aa60088e9b7e1547917f4;p=iotcloud.git diff --git a/version2/src/C/Commit.cc b/version2/src/C/Commit.cc index 34d51dc..6019732 100644 --- a/version2/src/C/Commit.cc +++ b/version2/src/C/Commit.cc @@ -16,7 +16,6 @@ Commit::Commit() : liveKeys(new Hashset) { } - Commit::Commit(int64_t _sequenceNumber, int64_t _machineId, int64_t _transactionSequenceNumber) : parts(new Hashtable()), missingParts(NULL), @@ -109,18 +108,13 @@ int32_t Commit::getNumberOfParts() { } void Commit::setDead() { - if (isDead) { - // Already dead - return; - } - - // Set dead - isDead = true; - - // Make all the parts of this transaction dead - for (int32_t partNumber : parts->keySet()) { - CommitPart *part = parts->get(partNumber); - part->setDead(); + if (!isDead) { + isDead = true; + // Make all the parts of this transaction dead + for (int32_t partNumber : parts->keySet()) { + CommitPart *part = parts->get(partNumber); + part->setDead(); + } } } @@ -130,17 +124,14 @@ CommitPart *Commit::getPart(int index) { void Commit::createCommitParts() { parts->clear(); - // Convert to chars Array *charData = convertDataToBytes(); - int commitPartCount = 0; int currentPosition = 0; int remaining = charData->length(); while (remaining > 0) { - bool isLastPart = false; // determine how much to copy int copySize = CommitPart_MAX_NON_HEADER_SIZE; @@ -164,7 +155,6 @@ void Commit::createCommitParts() { } void Commit::decodeCommitData() { - // Calculate the size of the data section int dataSize = 0; for (int i = 0; i < parts->keySet()->size(); i++) { @@ -221,37 +211,31 @@ Array *convertDataToBytes() { void Commit::setKVsMap(Hashtable *newKVs) { keyValueUpdateSet->clear(); - liveKeys->clear(); - keyValueUpdateSet->addAll(newKVs->values()); + liveKeys->clear(); liveKeys->addAll(newKVs->keySet()); } Commit *Commit_merge(Commit *newer, Commit *older, int64_t newSequenceNumber) { - if (older == NULL) { return newer; } else if (newer == NULL) { return older; } - Hashtable *kvSet = new Hashtable(); for (KeyValue *kv : older->getKeyValueUpdateSet()) { kvSet->put(kv->getKey(), kv); } - for (KeyValue *kv : newer->getKeyValueUpdateSet()) { kvSet->put(kv->getKey(), kv); } int64_t transactionSequenceNumber = newer->getTransactionSequenceNumber(); - if (transactionSequenceNumber == -1) { transactionSequenceNumber = older->getTransactionSequenceNumber(); } Commit *newCommit = new Commit(newSequenceNumber, newer->getMachineId(), transactionSequenceNumber); - newCommit->setKVsMap(kvSet); return newCommit;