X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dom%2Fmdsal-dom-inmemory-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fdom%2Fstore%2Finmemory%2FForeignShardThreePhaseCommitCohort.java;h=324a8be5404e1b791b2817197bd959a0aa6f4bbf;hb=745f204cf21689fa7cd0697053e71896c3808f43;hp=6516b17d51957ca6cabe8bb690168f798977c462;hpb=0024db23021eca4a83f0f868ed465d33cfbf3294;p=mdsal.git diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohort.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohort.java index 6516b17d51..324a8be540 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohort.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohort.java @@ -8,6 +8,7 @@ package org.opendaylight.mdsal.dom.store.inmemory; +import com.google.common.base.Preconditions; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; @@ -20,36 +21,40 @@ public class ForeignShardThreePhaseCommitCohort implements DOMStoreThreePhaseCom private static final Logger LOG = LoggerFactory.getLogger(ForeignShardThreePhaseCommitCohort.class); + private static final ListenableFuture SUCCESS_VALIDATE = Futures.immediateFuture(Boolean.TRUE); + private static final ListenableFuture SUCCESS_FUTURE = Futures.immediateFuture(null); + private final DOMDataTreeIdentifier prefix; private final ForeignShardModificationContext shard; public ForeignShardThreePhaseCommitCohort(final DOMDataTreeIdentifier prefix, final ForeignShardModificationContext shard) { - this.prefix = prefix; - this.shard = shard; + this.prefix = Preconditions.checkNotNull(prefix); + this.shard = Preconditions.checkNotNull(shard); } @Override public ListenableFuture canCommit() { LOG.debug("Validating transaction on foreign shard {}", prefix); - return shard.validate(); + return shard.isModified() ? shard.validate() : SUCCESS_VALIDATE; } @Override public ListenableFuture preCommit() { LOG.debug("Preparing transaction on foreign shard {}", prefix); - return shard.prepare(); + return shard.isModified() ? shard.prepare() : SUCCESS_FUTURE; } @Override public ListenableFuture abort() { - // FIXME abort on the shard + LOG.debug("Aborting transaction of foreign shard {}", prefix); + shard.closeForeignTransaction(); return Futures.immediateFuture(null); } @Override public ListenableFuture commit() { LOG.debug("Submitting transaction on foreign shard {}", prefix); - return shard.submit(); + return shard.isModified() ? shard.submit() : SUCCESS_FUTURE; } } \ No newline at end of file