Fix InMemory shard transaction chaining.
[mdsal.git] / dom / mdsal-dom-inmemory-datastore / src / main / java / org / opendaylight / mdsal / dom / store / inmemory / ShardSubmitCoordinationTask.java
index c7b0ee6adc01ae91c3222d6a25f708615f220242..6034e0b6b0f3b41c065071c3b03340ae70873513 100644 (file)
@@ -31,29 +31,34 @@ public class ShardSubmitCoordinationTask implements Callable<Void> {
     private final ShardCanCommitCoordinationTask canCommitCoordinationTask;
     private final ShardPreCommitCoordinationTask preCommitCoordinationTask;
     private final ShardCommitCoordinationTask commitCoordinationTask;
+    private final InmemoryDOMDataTreeShardWriteTransaction transaction;
 
 
     public ShardSubmitCoordinationTask(final DOMDataTreeIdentifier rootShardPrefix,
-                                       final Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
+                                       final Collection<DOMStoreThreePhaseCommitCohort> cohorts,
+                                       final InmemoryDOMDataTreeShardWriteTransaction transaction) {
         this.rootShardPrefix = Preconditions.checkNotNull(rootShardPrefix);
+        this.transaction = transaction;
 
         canCommitCoordinationTask = new ShardCanCommitCoordinationTask(rootShardPrefix, cohorts);
         preCommitCoordinationTask = new ShardPreCommitCoordinationTask(rootShardPrefix, cohorts);
-        commitCoordinationTask = new ShardCommitCoordinationTask(rootShardPrefix, cohorts);
+        commitCoordinationTask = new ShardCommitCoordinationTask(rootShardPrefix, cohorts, transaction);
     }
 
     @Override
     public Void call() throws TransactionCommitFailedException {
 
-        LOG.debug("Shard {}, CanCommit started", rootShardPrefix);
+        LOG.debug("Shard {}, tx{} CanCommit started", transaction.getIdentifier(), rootShardPrefix);
         canCommitCoordinationTask.canCommitBlocking();
 
-        LOG.debug("Shard {}, PreCommit started", rootShardPrefix);
+        LOG.debug("Shard {}, tx{} PreCommit started", transaction.getIdentifier(), rootShardPrefix);
         preCommitCoordinationTask.preCommitBlocking();
 
-        LOG.debug("Shard {}, commit started", rootShardPrefix);
+        LOG.debug("Shard {}, tx{} commit started", transaction.getIdentifier(), rootShardPrefix);
         commitCoordinationTask.commitBlocking();
 
+        transaction.transactionCommited(transaction);
+
         return null;
     }
 }