X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fsharding%2FPrefixedShardConfigWriter.java;h=5e7f83e7f274e4664f3d9f8b2e3e68876a17ae8b;hb=90f03193700920e656596d2a2257802cb22a90c7;hp=f6e4d37857b859bd1c92a94117dec32f294b1589;hpb=9e6714ce7693d8e3c00adf72dafce78041d3a7cc;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/PrefixedShardConfigWriter.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/PrefixedShardConfigWriter.java index f6e4d37857..5e7f83e7f2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/PrefixedShardConfigWriter.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/PrefixedShardConfigWriter.java @@ -11,6 +11,7 @@ package org.opendaylight.controller.cluster.sharding; import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import java.util.Collection; import java.util.concurrent.ExecutionException; import org.opendaylight.controller.cluster.access.concepts.MemberName; @@ -19,7 +20,6 @@ import org.opendaylight.controller.cluster.databroker.actors.dds.ClientSnapshot; import org.opendaylight.controller.cluster.databroker.actors.dds.ClientTransaction; import org.opendaylight.controller.cluster.databroker.actors.dds.DataStoreClient; import org.opendaylight.controller.cluster.datastore.utils.ClusterUtils; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -100,8 +100,9 @@ class PrefixedShardConfigWriter { final AsyncFunction validateFunction = input -> cohort.preCommit(); final AsyncFunction prepareFunction = input -> cohort.commit(); - final ListenableFuture prepareFuture = Futures.transform(cohort.canCommit(), validateFunction); - return Futures.transform(prepareFuture, prepareFunction); + final ListenableFuture prepareFuture = Futures.transformAsync(cohort.canCommit(), validateFunction, + MoreExecutors.directExecutor()); + return Futures.transformAsync(prepareFuture, prepareFunction, MoreExecutors.directExecutor()); } boolean checkDefaultIsPresent() { @@ -113,10 +114,12 @@ class PrefixedShardConfigWriter { final ClientSnapshot snapshot = history.takeSnapshot(); try { - return snapshot.exists(defaultId).checkedGet(); - } catch (final ReadFailedException e) { + return snapshot.exists(defaultId).get(); + } catch (InterruptedException | ExecutionException e) { LOG.error("Presence check of default shard in configuration failed.", e); return false; + } finally { + snapshot.abort(); } }