while (partsit->hasNext()) {
int64_t machineId = partsit->next();
Hashtable<Pair<int64_t, int32_t> *, TransactionPart *, uintptr_t, 0, pairHashFunction, pairEquals> *parts = partsit->currVal();
+ SetIterator<Pair<int64_t, int32_t> *, TransactionPart *, uintptr_t, 0, pairHashFunction, pairEquals> *pit = getKeyIterator(parts);
+ while(pit->hasNext()) {
+ Pair<int64_t, int32_t> * pair=pit->next();
+ pit->currVal()->releaseRef();
+ }
+ delete pit;
+
delete parts;
}
delete partsit;
while (partsit->hasNext()) {
int64_t machineId = partsit->next();
Hashtable<Pair<int64_t, int32_t> *, CommitPart *, uintptr_t, 0, pairHashFunction, pairEquals> *parts = partsit->currVal();
+ SetIterator<Pair<int64_t, int32_t> *, CommitPart *, uintptr_t, 0, pairHashFunction, pairEquals> *pit = getKeyIterator(parts);
+ while(pit->hasNext()) {
+ Pair<int64_t, int32_t> * pair=pit->next();
+ pit->currVal()->releaseRef();
+ }
+ delete pit;
delete parts;
}
delete partsit;
SetIterator<int64_t, Hashtable<Pair<int64_t, int32_t> *, TransactionPart *, uintptr_t, 0, pairHashFunction, pairEquals> *> *tpit = getKeyIterator(newTransactionParts);
while (tpit->hasNext()) {
int64_t machineId = tpit->next();
- Hashtable<Pair<int64_t, int32_t> *, TransactionPart *, uintptr_t, 0, pairHashFunction, pairEquals> *parts = newTransactionParts->get(machineId);
+ Hashtable<Pair<int64_t, int32_t> *, TransactionPart *, uintptr_t, 0, pairHashFunction, pairEquals> *parts = tpit->currVal();
SetIterator<Pair<int64_t, int32_t> *, TransactionPart *, uintptr_t, 0, pairHashFunction, pairEquals> *ptit = getKeyIterator(parts);
// Iterate through all the parts for that machine Id
if (lastTransactionNumber >= part->getSequenceNumber()) {
// Set dead the transaction part
part->setDead();
+ part->releaseRef();
continue;
}
}
liveTransactionBySequenceNumberTable->put(part->getSequenceNumber(), transaction);
liveTransactionByTransactionIdTable->put(transaction->getId(), transaction);
}
+ part->releaseRef();
}
delete ptit;
}
SetIterator<KeyValue *, KeyValue *> *kvit = transaction->getKeyValueUpdateSet()->iterator();
while (kvit->hasNext()) {
KeyValue *kv = kvit->next();
- newCommit->addKV(kv->getCopy());
+ newCommit->addKV(kv);
}
delete kvit;
SetIterator<Pair<int64_t, int32_t> *, CommitPart *, uintptr_t, 0, pairHashFunction, pairEquals> *pairit = getKeyIterator(parts);
while (pairit->hasNext()) {
Pair<int64_t, int32_t> *partId = pairit->next();
- CommitPart *part = parts->get(partId);
+ CommitPart *part = pairit->currVal();
// Get the transaction object for that sequence number
Hashtable<int64_t, Commit *> *commitForClientTable = liveCommitsTable->get(part->getMachineId());
// Add that part to the commit
commit->addPartDecode(part);
+ part->releaseRef();
}
delete pairit;
delete parts;
// Update the part and set dead ones we have already seen (got a
// rescued version)
+ entry->acquireRef();
TransactionPart *previouslySeenPart = transactionPart->put(entry->getPartId(), entry);
if (previouslySeenPart != NULL) {
+ previouslySeenPart->releaseRef();
previouslySeenPart->setDead();
}
}
}
// Update the part and set dead ones we have already seen (got a
// rescued version)
+ entry->acquireRef();
CommitPart *previouslySeenPart = commitPart->put(entry->getPartId(), entry);
if (previouslySeenPart != NULL) {
previouslySeenPart->setDead();
+ previouslySeenPart->releaseRef();
}
}