+ private void processEntry(NewKey entry) {
+ arbitratorTable.put(entry.getKey(), entry.getMachineID());
+ }
+
+ private void processEntry(Transaction entry) {
+ uncommittedTransactionsList.add(entry);
+ }
+
+ private void processEntry(Abort entry) {
+ for (Iterator<Transaction> i = uncommittedTransactionsList.iterator(); i.hasNext();) {
+ Transaction prevtrans = i.next();
+ if (prevtrans.getSequenceNumber() == entry.getTransSequenceNumber()) {
+ uncommittedTransactionsList.remove(prevtrans);
+ prevtrans.setDead();
+ return;
+ }
+ }
+ }
+
+ private void processEntry(Commit entry) {
+
+ for (Iterator<Commit> i = commitList.iterator(); i.hasNext();) {
+ Commit prevcommit = i.next();
+ prevcommit.updateLiveKeys(entry.getkeyValueUpdateSet());
+
+ if (!prevcommit.isLive()) {
+ commitList.remove(prevcommit);
+ }
+ }
+
+ commitList.add(entry);
+
+ // Update the committed table list
+ for (KeyValue kv : entry.getkeyValueUpdateSet()) {
+ IoTString key = kv.getKey();
+ commitedTable.put(key, kv);
+ }
+
+ long committedTransSeq = entry.getTransSequenceNumber();
+
+ // Make dead the transactions
+ for (Iterator<Transaction> i = uncommittedTransactionsList.iterator(); i.hasNext();) {
+ Transaction prevtrans = i.next();
+
+ if (prevtrans.getSequenceNumber() <= committedTransSeq) {
+ uncommittedTransactionsList.remove(prevtrans);
+ prevtrans.setDead();
+ }
+ }
+ }
+