Fix InMemory shard transaction chaining.
[mdsal.git] / dom / mdsal-dom-inmemory-datastore / src / main / java / org / opendaylight / mdsal / dom / store / inmemory / ShardCommitCoordinationTask.java
index 4ff9d2f5cdaaffa708830499503cc31085fa9317..a6adbb675f3f3acbfe7b786d32b5926edb6f86a6 100644 (file)
@@ -21,7 +21,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Task that coordinates the Commit phase of the provided {@link DOMStoreThreePhaseCommitCohort}'s
+ * Task that coordinates the Commit phase of the provided {@link DOMStoreThreePhaseCommitCohort}'s.
  */
 @Beta
 public class ShardCommitCoordinationTask implements Callable<Void> {
@@ -30,11 +30,14 @@ public class ShardCommitCoordinationTask implements Callable<Void> {
 
     private final DOMDataTreeIdentifier rootShardPrefix;
     private final Collection<DOMStoreThreePhaseCommitCohort> cohorts;
+    private InmemoryDOMDataTreeShardWriteTransaction transaction;
 
     public ShardCommitCoordinationTask(final DOMDataTreeIdentifier rootShardPrefix,
-                                       final Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
+                                       final Collection<DOMStoreThreePhaseCommitCohort> cohorts,
+                                       final InmemoryDOMDataTreeShardWriteTransaction transaction) {
         this.rootShardPrefix = Preconditions.checkNotNull(rootShardPrefix);
         this.cohorts = Preconditions.checkNotNull(cohorts);
+        this.transaction = Preconditions.checkNotNull(transaction);
     }
 
     @Override
@@ -43,6 +46,7 @@ public class ShardCommitCoordinationTask implements Callable<Void> {
         try {
             LOG.debug("Shard {}, commit started", rootShardPrefix);
             commitBlocking();
+            transaction.transactionCommited(transaction);
 
             return null;
         } catch (final TransactionCommitFailedException e) {
@@ -64,9 +68,9 @@ public class ShardCommitCoordinationTask implements Callable<Void> {
 
     private ListenableFuture<?>[] commitAll() {
         final ListenableFuture<?>[] ops = new ListenableFuture<?>[cohorts.size()];
-        int i = 0;
+        int index = 0;
         for (final DOMStoreThreePhaseCommitCohort cohort : cohorts) {
-            ops[i++] = cohort.commit();
+            ops[index++] = cohort.commit();
         }
         return ops;
     }