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%2FTransactionContextWrapper.java;h=2facfbd1a20a29a7d65719c4fba31ee0c4875977;hb=178ebab612c3ddd338e759ca7e929c25c623b0b3;hp=d11ee3e0bd318d6f6cf9476f5694e2626c4b4ba1;hpb=57775303636cc55b83430eb2eef3fa589129e8b6;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextWrapper.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextWrapper.java index d11ee3e0bd..2facfbd1a2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextWrapper.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextWrapper.java @@ -7,18 +7,22 @@ */ package org.opendaylight.controller.cluster.datastore; +import static com.google.common.base.Preconditions.checkState; +import static java.util.Objects.requireNonNull; + import akka.actor.ActorSelection; import akka.dispatch.Futures; -import com.google.common.base.Preconditions; import java.util.AbstractMap.SimpleImmutableEntry; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map.Entry; +import java.util.Optional; +import java.util.SortedSet; import java.util.concurrent.TimeUnit; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; -import org.opendaylight.controller.cluster.datastore.utils.ActorContext; +import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.Future; @@ -52,14 +56,14 @@ class TransactionContextWrapper { @GuardedBy("queuedTxOperations") private boolean pendingEnqueue; - TransactionContextWrapper(final TransactionIdentifier identifier, final ActorContext actorContext, + TransactionContextWrapper(final TransactionIdentifier identifier, final ActorUtils actorUtils, final String shardName) { - this.identifier = Preconditions.checkNotNull(identifier); + this.identifier = requireNonNull(identifier); this.limiter = new OperationLimiter(identifier, // 1 extra permit for the ready operation - actorContext.getDatastoreContext().getShardBatchedModificationCount() + 1, - TimeUnit.MILLISECONDS.toSeconds(actorContext.getDatastoreContext().getOperationTimeoutInMillis())); - this.shardName = Preconditions.checkNotNull(shardName); + actorUtils.getDatastoreContext().getShardBatchedModificationCount() + 1, + TimeUnit.MILLISECONDS.toSeconds(actorUtils.getDatastoreContext().getOperationTimeoutInMillis())); + this.shardName = requireNonNull(shardName); } TransactionContext getTransactionContext() { @@ -93,8 +97,7 @@ class TransactionContextWrapper { synchronized (queuedTxOperations) { contextOnEntry = transactionContext; if (contextOnEntry == null) { - Preconditions.checkState(pendingEnqueue == false, "Concurrent access to transaction %s detected", - identifier); + checkState(pendingEnqueue == false, "Concurrent access to transaction %s detected", identifier); pendingEnqueue = true; } } @@ -194,18 +197,18 @@ class TransactionContextWrapper { } } - Future readyTransaction() { + Future readyTransaction(Optional> participatingShardNames) { // avoid the creation of a promise and a TransactionOperation final TransactionContext localContext = transactionContext; if (localContext != null) { - return localContext.readyTransaction(null); + return localContext.readyTransaction(null, participatingShardNames); } final Promise promise = Futures.promise(); enqueueTransactionOperation(new TransactionOperation() { @Override public void invoke(final TransactionContext newTransactionContext, final Boolean havePermit) { - promise.completeWith(newTransactionContext.readyTransaction(havePermit)); + promise.completeWith(newTransactionContext.readyTransaction(havePermit, participatingShardNames)); } });