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%2FShardedDOMDataTreeWriteTransaction.java;h=ef7a108b6fdcff2c7f8f53ae3731586499d01b00;hb=55490ce1e312edfdb52891751b1420b848cc0ad5;hp=ef91b4f86e0c25a735d5aff028b6107edcc78a00;hpb=a7a06d4bb896ed16a73f9cfefef7424cfe16d1bc;p=mdsal.git diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeWriteTransaction.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeWriteTransaction.java index ef91b4f86e..ef7a108b6f 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeWriteTransaction.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeWriteTransaction.java @@ -16,7 +16,6 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import java.util.ArrayDeque; import java.util.Deque; -import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.atomic.AtomicLong; @@ -132,17 +131,29 @@ final class ShardedDOMDataTreeWriteTransaction implements DOMDataTreeCursorAware void doSubmit(final Consumer success, final BiConsumer failure) { - - final ListenableFuture> listListenableFuture = Futures.allAsList( - transactions.values().stream().map(tx -> { - LOG.debug("Readying tx {}", identifier); + LOG.debug("Readying tx {}", identifier); + + final ListenableFuture future; + switch (transactions.size()) { + case 0: + success.accept(this); + return; + case 1: { + final DOMDataTreeShardWriteTransaction tx = transactions.values().iterator().next(); tx.ready(); - return tx.submit(); - }).collect(Collectors.toList())); + future = tx.submit(); + break; + } + default: + future = Futures.allAsList(transactions.values().stream().map(tx -> { + tx.ready(); + return tx.submit(); + }).collect(Collectors.toList())); + } - Futures.addCallback(listListenableFuture, new FutureCallback>() { + Futures.addCallback(future, new FutureCallback() { @Override - public void onSuccess(final List result) { + public void onSuccess(final Object result) { success.accept(ShardedDOMDataTreeWriteTransaction.this); }