X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FRemoteTransactionContext.java;h=7e8a2a00ebe3fb701cb66f0991ba1a0fee9e2cf0;hb=d71b6614d6cdb5a98f086edeb56f5c52f365c61c;hp=a25ddc873327accdc31995b160409025b19ce337;hpb=daaef05cbf70e6cbec9af181258faead6d9620a6;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContext.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContext.java index a25ddc8733..7e8a2a00eb 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContext.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContext.java @@ -12,7 +12,6 @@ import akka.actor.ActorSelection; import akka.dispatch.OnComplete; import com.google.common.base.Optional; import com.google.common.util.concurrent.SettableFuture; -import org.opendaylight.controller.cluster.datastore.identifiers.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.messages.BatchedModifications; import org.opendaylight.controller.cluster.datastore.messages.CloseTransaction; import org.opendaylight.controller.cluster.datastore.messages.DataExists; @@ -46,27 +45,24 @@ public class RemoteTransactionContext extends AbstractTransactionContext { private final boolean isTxActorLocal; private final short remoteTransactionVersion; - private final OperationCompleter operationCompleter; private BatchedModifications batchedModifications; private int totalBatchedModificationsSent; - protected RemoteTransactionContext(ActorSelection actor, TransactionIdentifier identifier, + protected RemoteTransactionContext(ActorSelection actor, ActorContext actorContext, boolean isTxActorLocal, - short remoteTransactionVersion, OperationCompleter operationCompleter) { - super(identifier); + short remoteTransactionVersion, OperationLimiter limiter) { + super(limiter); this.actor = actor; this.actorContext = actorContext; this.isTxActorLocal = isTxActorLocal; this.remoteTransactionVersion = remoteTransactionVersion; - this.operationCompleter = operationCompleter; } private Future completeOperation(Future operationFuture){ - operationFuture.onComplete(this.operationCompleter, actorContext.getClientDispatcher()); + operationFuture.onComplete(getLimiter(), actorContext.getClientDispatcher()); return operationFuture; } - private ActorSelection getActor() { return actor; } @@ -107,6 +103,8 @@ public class RemoteTransactionContext extends AbstractTransactionContext { @Override public Future readyTransaction() { + logModificationCount(); + LOG.debug("Tx {} readyTransaction called", getIdentifier()); // Send the remaining batched modifications, if any, with the ready flag set. @@ -128,6 +126,7 @@ public class RemoteTransactionContext extends AbstractTransactionContext { } private void batchModification(Modification modification) { + incrementModificationCount(); if(batchedModifications == null) { batchedModifications = newBatchedModifications(); } @@ -175,6 +174,7 @@ public class RemoteTransactionContext extends AbstractTransactionContext { public void deleteData(YangInstanceIdentifier path) { LOG.debug("Tx {} deleteData called path = {}", getIdentifier(), path); + acquireOperation(); batchModification(new DeleteModification(path)); } @@ -182,6 +182,7 @@ public class RemoteTransactionContext extends AbstractTransactionContext { public void mergeData(YangInstanceIdentifier path, NormalizedNode data) { LOG.debug("Tx {} mergeData called path = {}", getIdentifier(), path); + acquireOperation(); batchModification(new MergeModification(path, data)); } @@ -189,6 +190,7 @@ public class RemoteTransactionContext extends AbstractTransactionContext { public void writeData(YangInstanceIdentifier path, NormalizedNode data) { LOG.debug("Tx {} writeData called path = {}", getIdentifier(), path); + acquireOperation(); batchModification(new WriteModification(path, data)); } @@ -201,6 +203,7 @@ public class RemoteTransactionContext extends AbstractTransactionContext { // Send any batched modifications. This is necessary to honor the read uncommitted semantics of the // public API contract. + acquireOperation(); sendBatchedModifications(); OnComplete onComplete = new OnComplete() { @@ -243,6 +246,7 @@ public class RemoteTransactionContext extends AbstractTransactionContext { // Send any batched modifications. This is necessary to honor the read uncommitted semantics of the // public API contract. + acquireOperation(); sendBatchedModifications(); OnComplete onComplete = new OnComplete() {