X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FSingleCommitCohortProxy.java;h=5e8a95405bbca97a152498f785871ed2db4dedf7;hp=e340859321c6ae7231fcc52b7b4e6ab80a9efd30;hb=3402cfce32b05957219e54754dd7ca5b0a54cd0e;hpb=412db94945c5db5d2da918f5e23bd3abcecc4d10 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/SingleCommitCohortProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/SingleCommitCohortProxy.java index e340859321..5e8a95405b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/SingleCommitCohortProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/SingleCommitCohortProxy.java @@ -7,16 +7,16 @@ */ package org.opendaylight.controller.cluster.datastore; -import akka.actor.ActorSelection; -import akka.dispatch.Futures; +import static java.util.Objects.requireNonNull; + import akka.dispatch.OnComplete; -import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import java.util.Arrays; import java.util.List; -import org.opendaylight.controller.cluster.datastore.utils.ActorContext; -import org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort; +import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; +import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; +import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.Future; @@ -24,25 +24,24 @@ import scala.concurrent.Future; /** * A cohort proxy implementation for a single-shard transaction commit. If the transaction was a direct commit * to the shard, this implementation elides the CanCommitTransaction and CommitTransaction messages to the - * shard as an optimization. Otherwise the 3-phase commit to the shard is delegated to a - * ThreePhaseCommitCohortProxy instance (this is for backwards compatibility with pre-Lithium versions). + * shard as an optimization. * * @author Thomas Pantelis */ class SingleCommitCohortProxy extends AbstractThreePhaseCommitCohort { private static final Logger LOG = LoggerFactory.getLogger(SingleCommitCohortProxy.class); - private final ActorContext actorContext; + private final ActorUtils actorUtils; private final Future cohortFuture; - private final String transactionId; + private final TransactionIdentifier transactionId; private volatile DOMStoreThreePhaseCommitCohort delegateCohort = NoOpDOMStoreThreePhaseCommitCohort.INSTANCE; private final OperationCallback.Reference operationCallbackRef; - SingleCommitCohortProxy(ActorContext actorContext, Future cohortFuture, String transactionId, + SingleCommitCohortProxy(ActorUtils actorUtils, Future cohortFuture, TransactionIdentifier transactionId, OperationCallback.Reference operationCallbackRef) { - this.actorContext = actorContext; + this.actorUtils = actorUtils; this.cohortFuture = cohortFuture; - this.transactionId = transactionId; + this.transactionId = requireNonNull(transactionId); this.operationCallbackRef = operationCallbackRef; } @@ -55,7 +54,7 @@ class SingleCommitCohortProxy extends AbstractThreePhaseCommitCohort { cohortFuture.onComplete(new OnComplete() { @Override public void onComplete(Throwable failure, Object cohortResponse) { - if(failure != null) { + if (failure != null) { operationCallbackRef.get().failure(); returnFuture.setException(failure); return; @@ -63,11 +62,6 @@ class SingleCommitCohortProxy extends AbstractThreePhaseCommitCohort { operationCallbackRef.get().success(); - if(cohortResponse instanceof ActorSelection) { - handlePreLithiumActorCohort((ActorSelection)cohortResponse, returnFuture); - return; - } - LOG.debug("Tx {} successfully completed direct commit", transactionId); // The Future was the result of a direct commit to the shard, essentially eliding the @@ -77,7 +71,7 @@ class SingleCommitCohortProxy extends AbstractThreePhaseCommitCohort { // immediate success, to complete the 3PC for the front-end. returnFuture.set(Boolean.TRUE); } - }, actorContext.getClientDispatcher()); + }, actorUtils.getClientDispatcher()); return returnFuture; } @@ -101,22 +95,4 @@ class SingleCommitCohortProxy extends AbstractThreePhaseCommitCohort { List> getCohortFutures() { return Arrays.asList(cohortFuture); } - - private void handlePreLithiumActorCohort(ActorSelection actorSelection, final SettableFuture returnFuture) { - // Handle backwards compatibility. An ActorSelection response would be returned from a - // pre-Lithium version. In this case delegate to a ThreePhaseCommitCohortProxy. - delegateCohort = new ThreePhaseCommitCohortProxy(actorContext, - Arrays.asList(Futures.successful(actorSelection)), transactionId); - com.google.common.util.concurrent.Futures.addCallback(delegateCohort.canCommit(), new FutureCallback() { - @Override - public void onSuccess(Boolean canCommit) { - returnFuture.set(canCommit); - } - - @Override - public void onFailure(Throwable t) { - returnFuture.setException(t); - } - }); - } }