BUG-5280: move transactions keeping to history
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / databroker / actors / dds / ClientTransaction.java
index 0a1c8be2471102db655b80359f63ebb5faa2cfd2..81d00ee8bce3279842696f6a912d4744423a2e47 100644 (file)
@@ -131,16 +131,22 @@ public final class ClientTransaction extends LocalAbortable implements Identifia
         for (AbstractProxyTransaction p : proxies.values()) {
             p.seal();
         }
-        parent.onTransactionReady(this);
 
+        final AbstractTransactionCommitCohort cohort;
         switch (proxies.size()) {
             case 0:
-                return EmptyTransactionCommitCohort.INSTANCE;
+                cohort = new EmptyTransactionCommitCohort(parent, transactionId);
+                break;
             case 1:
-                return new DirectTransactionCommitCohort(Iterables.getOnlyElement(proxies.values()));
+                cohort = new DirectTransactionCommitCohort(parent, transactionId,
+                    Iterables.getOnlyElement(proxies.values()));
+                break;
             default:
-                return new ClientTransactionCommitCohort(proxies.values());
+                cohort = new ClientTransactionCommitCohort(parent, transactionId, proxies.values());
+                break;
         }
+
+        return parent.onTransactionReady(transactionId, cohort);
     }
 
     /**
@@ -152,6 +158,8 @@ public final class ClientTransaction extends LocalAbortable implements Identifia
                 proxy.abort();
             }
             proxies.clear();
+
+            parent.onTransactionAbort(transactionId);
         }
     }
 
@@ -160,4 +168,8 @@ public final class ClientTransaction extends LocalAbortable implements Identifia
         LOG.debug("Aborting transaction {}", getIdentifier(), cause);
         abort();
     }
+
+    Map<Long, AbstractProxyTransaction> getProxies() {
+        return proxies;
+    }
 }