Convert OperationCompleter to OperationLimiter
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / RemoteTransactionContextSupport.java
index 66562975cc8472af0ebda42d7b7e252b68861bb9..9cb062dc1c58775ca83d8aa879cbf3daf750e68a 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.controller.cluster.datastore;
 import akka.actor.ActorSelection;
 import akka.dispatch.OnComplete;
 import com.google.common.base.Preconditions;
-import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 import org.opendaylight.controller.cluster.datastore.compat.PreLithiumTransactionContextImpl;
 import org.opendaylight.controller.cluster.datastore.exceptions.NoShardLeaderException;
@@ -75,7 +74,7 @@ final class RemoteTransactionContextSupport {
         return parent.getActorContext();
     }
 
-    private Semaphore getOperationLimiter() {
+    private OperationLimiter getOperationLimiter() {
         return parent.getLimiter();
     }
 
@@ -192,13 +191,16 @@ final class RemoteTransactionContextSupport {
 
         if (remoteTransactionVersion < DataStoreVersions.LITHIUM_VERSION) {
             ret = new PreLithiumTransactionContextImpl(transactionPath, transactionActor, getIdentifier(),
-                getActorContext(), isTxActorLocal, remoteTransactionVersion, parent.getCompleter());
+                getActorContext(), isTxActorLocal, remoteTransactionVersion, parent.getLimiter());
         } else {
             ret = new RemoteTransactionContext(transactionActor, getIdentifier(), getActorContext(),
-                isTxActorLocal, remoteTransactionVersion, parent.getCompleter());
+                isTxActorLocal, remoteTransactionVersion, parent.getLimiter());
+        }
+
+        if(parent.getType() == TransactionType.READ_ONLY) {
+            TransactionContextCleanup.track(this, ret);
         }
 
-        TransactionContextCleanup.track(this, ret);
         return ret;
     }
 }