X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=version2%2Fsrc%2FC%2FCommit.cc;h=2ee208d5fd7397995e5f39e452a9ec44825e7308;hb=0173578905303681df8ea5f3c35b3ead109c8ba8;hp=a24e0148df376b6180c7bd574ff499c6c6b37519;hpb=b7ed1849727b50e226f3b9d1c432d3071d739368;p=iotcloud.git diff --git a/version2/src/C/Commit.cc b/version2/src/C/Commit.cc index a24e014..2ee208d 100644 --- a/version2/src/C/Commit.cc +++ b/version2/src/C/Commit.cc @@ -33,8 +33,15 @@ Commit::Commit(int64_t _sequenceNumber, int64_t _machineId, int64_t _transaction Commit::~Commit() { delete parts; - delete keyValueUpdateSet; - delete liveKeys; + { + SetIterator * keyit = keyValueUpdateSet->iterator(); + while(keyit->hasNext()) { + delete keyit->next(); + } + delete keyit; + delete keyValueUpdateSet; + } + delete liveKeys; if (missingParts != NULL) delete missingParts; } @@ -99,8 +106,9 @@ Vector *Commit::getParts() { } void Commit::addKV(KeyValue *kv) { - keyValueUpdateSet->add(kv); - liveKeys->add(kv->getKey()); + KeyValue * kvcopy = kv->getCopy(); + keyValueUpdateSet->add(kvcopy); + liveKeys->add(kvcopy->getKey()); } void Commit::invalidateKey(IoTString *key) { @@ -166,6 +174,7 @@ void Commit::createCommitParts() { commitPartCount++; remaining -= copySize; } + delete charData; } void Commit::decodeCommitData() { @@ -201,6 +210,7 @@ void Commit::decodeCommitData() { keyValueUpdateSet->add(kv); liveKeys->add(kv->getKey()); } + delete bbDecode; } Array *Commit::convertDataToBytes() { @@ -227,8 +237,10 @@ Array *Commit::convertDataToBytes() { kv->encode(bbEncode); } delete kvit; - - return bbEncode->array(); + Array * array = bbEncode->array(); + bbEncode->releaseArray(); + delete bbEncode; + return array; } void Commit::setKVsMap(Hashset *newKVs) { @@ -237,8 +249,9 @@ void Commit::setKVsMap(Hashset *kvit = newKVs->iterator(); while (kvit->hasNext()) { KeyValue *kv = kvit->next(); - liveKeys->add(kv->getKey()); - keyValueUpdateSet->add(kv); + KeyValue *kvcopy = kv->getCopy(); + liveKeys->add(kvcopy->getKey()); + keyValueUpdateSet->add(kvcopy); } delete kvit; }