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=033cbeaae7b43437cfd4b540207a4700d53fd266;hp=e340859321c6ae7231fcc52b7b4e6ab80a9efd30;hb=a3cecfd01d0ef8922530924e3ee9684eb03ee5d6;hpb=2727bea09c83646b6cbd2ef9672d0b7f6cf3b22f 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..033cbeaae7 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,14 +7,13 @@ */ package org.opendaylight.controller.cluster.datastore; -import akka.actor.ActorSelection; -import akka.dispatch.Futures; import akka.dispatch.OnComplete; -import com.google.common.util.concurrent.FutureCallback; +import com.google.common.base.Preconditions; 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.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; import org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort; import org.slf4j.Logger; @@ -24,8 +23,7 @@ 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 */ @@ -34,15 +32,15 @@ class SingleCommitCohortProxy extends AbstractThreePhaseCommitCohort { private final ActorContext actorContext; 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(ActorContext actorContext, Future cohortFuture, TransactionIdentifier transactionId, OperationCallback.Reference operationCallbackRef) { this.actorContext = actorContext; this.cohortFuture = cohortFuture; - this.transactionId = transactionId; + this.transactionId = Preconditions.checkNotNull(transactionId); this.operationCallbackRef = operationCallbackRef; } @@ -55,7 +53,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 +61,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 @@ -101,22 +94,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); - } - }); - } }