X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2Factors%2Fdds%2FClientSnapshot.java;h=5611a1044f1446452ab8eeedbf292ca9c8384dbd;hb=HEAD;hp=c8b1328cfdb53017842a4f4ed377e33c7bc5b3e1;hpb=44d274e8a4282ef859a35369c563e4963cf2185a;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java index c8b1328cfd..5611a1044f 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java @@ -11,6 +11,7 @@ import com.google.common.annotations.Beta; import com.google.common.util.concurrent.FluentFuture; import java.util.Optional; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; +import org.opendaylight.controller.cluster.datastore.utils.RootScatterGather; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -28,19 +29,20 @@ public class ClientSnapshot extends AbstractClientHandle exists(final YangInstanceIdentifier path) { - return ensureSnapshotProxy(path).exists(path); + return ensureProxy(path).exists(path); } - public FluentFuture>> read(final YangInstanceIdentifier path) { - return ensureSnapshotProxy(path).read(path); + public FluentFuture> read(final YangInstanceIdentifier path) { + return path.isEmpty() ? readRoot() : ensureProxy(path).read(path); + } + + private FluentFuture> readRoot() { + return RootScatterGather.gather(parent().actorUtils(), ensureAllProxies() + .map(proxy -> proxy.read(YangInstanceIdentifier.of()))); } @Override final AbstractProxyTransaction createProxy(final Long shard) { return parent().createSnapshotProxy(getIdentifier(), shard); } - - private AbstractProxyTransaction ensureSnapshotProxy(final YangInstanceIdentifier path) { - return ensureProxy(path); - } }