From 2a84db68ea988fbee34a97669924e26e756a00f8 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 10 Jul 2018 00:12:06 +0200 Subject: [PATCH] Take advantage of FluentFutures FluentFutures allow Change-Id: I8c260174cf6f824827d8a6ff8df15c00d70c81e0 Signed-off-by: Robert Varga --- .../mdsal/common/api/EmptyCommitInfo.java | 4 ++-- .../broker/DOMForwardedWriteTransaction.java | 5 +++-- .../dom/broker/SerializedDOMDataBroker.java | 19 ++++++------------- .../ShardedDOMWriteTransactionAdapter.java | 8 +++----- 4 files changed, 14 insertions(+), 22 deletions(-) diff --git a/common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/EmptyCommitInfo.java b/common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/EmptyCommitInfo.java index 8ec663553d..267a7d37f4 100644 --- a/common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/EmptyCommitInfo.java +++ b/common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/EmptyCommitInfo.java @@ -8,8 +8,8 @@ package org.opendaylight.mdsal.common.api; import com.google.common.util.concurrent.FluentFuture; -import com.google.common.util.concurrent.Futures; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; /** * Empty commit info singleton. Useful when {@link AsyncWriteTransaction#commit()} has nothing more to say. @@ -19,7 +19,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; @NonNullByDefault final class EmptyCommitInfo implements CommitInfo { static final CommitInfo INSTANCE = new EmptyCommitInfo(); - static final FluentFuture FLUENT_INSTANCE = FluentFuture.from(Futures.immediateFuture(INSTANCE)); + static final FluentFuture FLUENT_INSTANCE = FluentFutures.immediateFluentFuture(INSTANCE); private EmptyCommitInfo() { // Hidden diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMForwardedWriteTransaction.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMForwardedWriteTransaction.java index 29b3f3f220..c74bce66fb 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMForwardedWriteTransaction.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMForwardedWriteTransaction.java @@ -21,6 +21,7 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.slf4j.Logger; @@ -141,8 +142,8 @@ class DOMForwardedWriteTransaction extends ret = impl.commit(this, cohorts); } catch (RuntimeException e) { - ret = FluentFuture.from(Futures.immediateFailedFuture( - TransactionCommitFailedExceptionMapper.COMMIT_ERROR_MAPPER.apply(e))); + ret = FluentFutures.immediateFailedFluentFuture( + TransactionCommitFailedExceptionMapper.COMMIT_ERROR_MAPPER.apply(e)); } FUTURE_UPDATER.lazySet(this, ret); return ret; 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 93c4bdcd0c..2f62c7bde0 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 @@ -5,13 +5,10 @@ * 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.mdsal.dom.broker; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.FluentFuture; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import java.util.Collection; import java.util.Map; @@ -23,6 +20,7 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.mdsal.dom.spi.store.DOMStore; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.util.DurationStatisticsTracker; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -69,18 +67,13 @@ public class SerializedDOMDataBroker extends AbstractDOMDataBroker { Preconditions.checkArgument(cohorts != null, "Cohorts must not be null."); LOG.debug("Tx: {} is submitted for execution.", transaction.getIdentifier()); - ListenableFuture commitFuture = null; try { - commitFuture = executor.submit(new CommitCoordinationTask(transaction, cohorts, - commitStatsTracker)); + return FluentFuture.from(executor.submit( + new CommitCoordinationTask(transaction, cohorts, commitStatsTracker))); } catch (RejectedExecutionException e) { - LOG.error("The commit executor's queue is full - submit task was rejected. \n" - + executor, e); - return FluentFuture.from(Futures.immediateFailedFuture( - new TransactionCommitFailedException( - "Could not submit the commit task - the commit queue capacity has been exceeded.", 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(commitFuture); } } diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMWriteTransactionAdapter.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMWriteTransactionAdapter.java index b446477194..d4ec4c0e91 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMWriteTransactionAdapter.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMWriteTransactionAdapter.java @@ -11,7 +11,6 @@ package org.opendaylight.mdsal.dom.broker; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import java.util.Collections; import java.util.EnumMap; @@ -82,16 +81,15 @@ public class ShardedDOMWriteTransactionAdapter implements DOMDataTreeWriteTransa } // First we need to close cursors cursorMap.values().forEach(DOMDataTreeWriteCursor::close); - final ListenableFuture> aggregatedSubmit = Futures.allAsList( + final FluentFuture> aggregatedSubmit = FluentFuture.from(Futures.allAsList( transactionMap.get(LogicalDatastoreType.CONFIGURATION).submit(), - transactionMap.get(LogicalDatastoreType.OPERATIONAL).submit()); + transactionMap.get(LogicalDatastoreType.OPERATIONAL).submit())); // Now we can close producers and mark transaction as finished closeProducers(); finished = true; - return FluentFuture.from(Futures.transform(aggregatedSubmit, - unused -> CommitInfo.empty(), MoreExecutors.directExecutor())); + return aggregatedSubmit.transform(unused -> CommitInfo.empty(), MoreExecutors.directExecutor()); } @Override -- 2.36.6