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%2Fdatabroker%2Factors%2Fdds%2FModuleShardBackendResolver.java;h=ee887b00faca112951952d18715259871904cb84;hb=refs%2Fchanges%2F78%2F100478%2F3;hp=61bb78ed3fc464d7abe502be7c8f8b833df0d773;hpb=c763a16f9cd72bb4f27997f301f163b83d470a24;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java index 61bb78ed3f..ee887b00fa 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java @@ -18,6 +18,7 @@ import java.util.concurrent.CompletionStage; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.TimeUnit; +import java.util.stream.Stream; import org.checkerframework.checker.lock.qual.GuardedBy; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.client.BackendInfoResolver; @@ -84,7 +85,16 @@ final class ModuleShardBackendResolver extends AbstractShardBackendResolver { } Long resolveShardForPath(final YangInstanceIdentifier path) { - final String shardName = actorUtils().getShardStrategyFactory().getStrategy(path).findShard(path); + return resolveCookie(actorUtils().getShardStrategyFactory().getStrategy(path).findShard(path)); + } + + Stream resolveAllShards() { + return actorUtils().getConfiguration().getAllShardNames().stream() + .sorted() + .map(this::resolveCookie); + } + + private @NonNull Long resolveCookie(final String shardName) { final Long cookie = shards.get(shardName); return cookie != null ? cookie : populateShard(shardName); }