From 3f979acfb60c2ffb1ce70c5475bdfce8f8e7df01 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 16 Dec 2015 16:44:40 +0100 Subject: [PATCH] Do not overwrite operation failure When a ready-time failure occurs, do not overwrite it with a null operation error (if no operations failed). Change-Id: If2ac379e25af7bc93602b91ea5b068974a196771 Signed-off-by: Robert Varga --- .../cluster/datastore/LocalThreePhaseCommitCohort.java | 9 +++++++-- .../cluster/datastore/LocalTransactionContext.java | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalThreePhaseCommitCohort.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalThreePhaseCommitCohort.java index 569bacceaa..442e2f3b4d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalThreePhaseCommitCohort.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalThreePhaseCommitCohort.java @@ -12,6 +12,7 @@ import akka.dispatch.Futures; import akka.dispatch.OnComplete; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.ListenableFuture; +import javax.annotation.Nonnull; import org.opendaylight.controller.cluster.datastore.identifiers.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.messages.CommitTransactionReply; import org.opendaylight.controller.cluster.datastore.messages.ReadyLocalTransaction; @@ -66,8 +67,12 @@ class LocalThreePhaseCommitCohort implements DOMStoreThreePhaseCommitCohort { return actorContext.executeOperationAsync(leader, message, actorContext.getTransactionCommitOperationTimeout()); } - void setOperationError(Exception operationError) { - this.operationError = operationError; + void setOperationError(@Nonnull Exception operationError) { + if (this.operationError != null) { + LOG.info("Cohort {} already had operation error", this, this.operationError); + } + + this.operationError = Preconditions.checkNotNull(operationError); } Future initiateCoordinatedCommit() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalTransactionContext.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalTransactionContext.java index 276523e680..9398171b20 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalTransactionContext.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalTransactionContext.java @@ -113,7 +113,9 @@ abstract class LocalTransactionContext extends AbstractTransactionContext { private LocalThreePhaseCommitCohort ready() { logModificationCount(); LocalThreePhaseCommitCohort cohort = readySupport.onTransactionReady(getWriteDelegate()); - cohort.setOperationError(operationError); + if (operationError != null) { + cohort.setOperationError(operationError); + } return cohort; } -- 2.36.6