X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fbroker%2Fimpl%2FCommitCoordinationTask.java;h=bd16b5dbc98e314cbf775580627ecfab7b2eb830;hb=8da08c9f008d371c491cf6b35494ca36c2ebdcb9;hp=37f33aabeed7610ec0a6fce481dbfe108f702193;hpb=4ef15f7a7e3fb5bcaa6a3202d268a5c945e0aa71;p=controller.git diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/CommitCoordinationTask.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/CommitCoordinationTask.java index 37f33aabee..bd16b5dbc9 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/CommitCoordinationTask.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/CommitCoordinationTask.java @@ -5,10 +5,11 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.md.sal.dom.broker.impl; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + +import com.google.common.base.Supplier; import com.google.common.base.Throwables; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -26,7 +27,8 @@ import org.slf4j.LoggerFactory; * Implementation of blocking three-phase commit-coordination tasks without * support of cancellation. */ -final class CommitCoordinationTask implements Callable { +@Deprecated(forRemoval = true) +final class CommitCoordinationTask implements Callable { private enum Phase { canCommit, preCommit, @@ -37,17 +39,20 @@ final class CommitCoordinationTask implements Callable { private final Collection cohorts; private final DurationStatisticsTracker commitStatTracker; private final DOMDataWriteTransaction tx; + private final Supplier futureValueSupplier; CommitCoordinationTask(final DOMDataWriteTransaction transaction, final Collection cohorts, - final DurationStatisticsTracker commitStatTracker) { - this.tx = Preconditions.checkNotNull(transaction, "transaction must not be null"); - this.cohorts = Preconditions.checkNotNull(cohorts, "cohorts must not be null"); + final DurationStatisticsTracker commitStatTracker, + final Supplier futureValueSupplier) { + this.tx = requireNonNull(transaction, "transaction must not be null"); + this.cohorts = requireNonNull(cohorts, "cohorts must not be null"); this.commitStatTracker = commitStatTracker; + this.futureValueSupplier = futureValueSupplier; } @Override - public Void call() throws TransactionCommitFailedException { + public T call() throws TransactionCommitFailedException { final long startTime = commitStatTracker != null ? System.nanoTime() : 0; Phase phase = Phase.canCommit; @@ -65,7 +70,7 @@ final class CommitCoordinationTask implements Callable { commitBlocking(); LOG.debug("Transaction {}: doCommit completed", tx.getIdentifier()); - return null; + return futureValueSupplier.get(); } catch (final TransactionCommitFailedException e) { LOG.warn("Tx: {} Error during phase {}, starting Abort", tx.getIdentifier(), phase, e); abortBlocking(e);