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 / ClientTransactionCommitCohort.java
index a7de89aac3e7da504f4010a01eedcda598981597..a4eb5e074f421ffc3e8bb718f02e747540f3839a 100644 (file)
@@ -9,13 +9,16 @@ package org.opendaylight.controller.cluster.databroker.actors.dds;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ListenableFuture;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import java.util.Collection;
 import java.util.Collection;
-import java.util.List;
+import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
 
 final class ClientTransactionCommitCohort extends AbstractTransactionCommitCohort {
 
 final class ClientTransactionCommitCohort extends AbstractTransactionCommitCohort {
-    private final List<AbstractProxyTransaction> proxies;
+    private final Collection<AbstractProxyTransaction> proxies;
 
 
-    ClientTransactionCommitCohort(final Collection<AbstractProxyTransaction> proxies) {
+    ClientTransactionCommitCohort(final AbstractClientHistory parent, final TransactionIdentifier txId,
+            final Collection<AbstractProxyTransaction> proxies) {
+        super(parent, txId);
         this.proxies = ImmutableList.copyOf(proxies);
     }
 
         this.proxies = ImmutableList.copyOf(proxies);
     }
 
@@ -32,6 +35,11 @@ final class ClientTransactionCommitCohort extends AbstractTransactionCommitCohor
         return ret;
     }
 
         return ret;
     }
 
+    private ListenableFuture<Void> addComplete(final ListenableFuture<Void> future) {
+        future.addListener(this::complete, MoreExecutors.directExecutor());
+        return future;
+    }
+
     @Override
     public ListenableFuture<Void> preCommit() {
         final VotingFuture<Void> ret = new VotingFuture<>(null, proxies.size());
     @Override
     public ListenableFuture<Void> preCommit() {
         final VotingFuture<Void> ret = new VotingFuture<>(null, proxies.size());
@@ -49,7 +57,7 @@ final class ClientTransactionCommitCohort extends AbstractTransactionCommitCohor
             proxy.doCommit(ret);
         }
 
             proxy.doCommit(ret);
         }
 
-        return ret;
+        return addComplete(ret);
     }
 
     @Override
     }
 
     @Override
@@ -59,6 +67,6 @@ final class ClientTransactionCommitCohort extends AbstractTransactionCommitCohor
             proxy.abort(ret);
         }
 
             proxy.abort(ret);
         }
 
-        return ret;
+        return addComplete(ret);
     }
 }
     }
 }