X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dom%2Fmdsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fdom%2Fbroker%2FSerializedDOMDataBroker.java;h=c41d2c0b1480b4d6a6a456c74c11f12e6f0cd100;hb=90b0687e0640ee23369d2ad9978628e3ff957a26;hp=4ed4eb862dfa27f50b27b2d3ea57f4965584e3ae;hpb=a0c657cf8121e2dc7ec54fff7ed8b9fd76452967;p=mdsal.git diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/SerializedDOMDataBroker.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/SerializedDOMDataBroker.java index 4ed4eb862d..c41d2c0b14 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/SerializedDOMDataBroker.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/SerializedDOMDataBroker.java @@ -10,13 +10,17 @@ package org.opendaylight.mdsal.dom.broker; import static java.util.Objects.requireNonNull; import com.google.common.util.concurrent.FluentFuture; -import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; import java.util.Map; +import java.util.concurrent.Executor; import java.util.concurrent.RejectedExecutionException; import org.opendaylight.mdsal.common.api.CommitInfo; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; +import org.opendaylight.mdsal.dom.broker.CommitCoordinationTask.WithTracker; +import org.opendaylight.mdsal.dom.spi.AbstractDOMDataBroker; import org.opendaylight.mdsal.dom.spi.store.DOMStore; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.util.DurationStatisticsTracker; @@ -38,17 +42,16 @@ public final class SerializedDOMDataBroker extends AbstractDOMDataBroker { private static final Logger LOG = LoggerFactory.getLogger(SerializedDOMDataBroker.class); private final DurationStatisticsTracker commitStatsTracker = DurationStatisticsTracker.createConcurrent(); - private final ListeningExecutorService executor; + private final Executor executor; /** * Construct DOMDataCommitCoordinator which uses supplied executor to * process commit coordinations. * * @param datastores the Map of backing DOMStore instances - * @param executor the ListeningExecutorService to use + * @param executor the Executor to use */ - public SerializedDOMDataBroker(final Map datastores, - final ListeningExecutorService executor) { + public SerializedDOMDataBroker(final Map datastores, final Executor executor) { super(datastores); this.executor = requireNonNull(executor, "executor must not be null."); } @@ -58,17 +61,20 @@ public final class SerializedDOMDataBroker extends AbstractDOMDataBroker { } @Override - protected FluentFuture commit(final DOMDataTreeWriteTransaction transaction, + protected FluentFuture commit(final DOMDataTreeWriteTransaction transaction, final DOMStoreThreePhaseCommitCohort cohort) { LOG.debug("Tx: {} is submitted for execution.", transaction.getIdentifier()); + final ListenableFuture future; try { - return FluentFuture.from(executor.submit( - new CommitCoordinationTask.WithTracker(transaction, cohort, commitStatsTracker))); + // FIXME: use FluentFutures.submit() once it is available + future = Futures.submit(new WithTracker(transaction, cohort, commitStatsTracker), executor); } catch (RejectedExecutionException e) { LOG.error("The commit executor's queue is full - submit task was rejected. \n{}", executor, e); return FluentFutures.immediateFailedFluentFuture(new TransactionCommitFailedException( "Could not submit the commit task - the commit queue capacity has been exceeded.", e)); } + + return FluentFuture.from(future); } }