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%2Fdatastore%2FDataTreeChangeListenerSupport.java;h=76458fd8edd1471a87cf278d66f4e9d000c26d61;hb=207c7ca08028fc86e06ec0ac761208d6d3190742;hp=db5eeb83e70eedd4101cceeabd5491a2c5b3a47e;hpb=559c2b6afa7714572e01b52029acaa4d5a7315e2;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java index db5eeb83e7..76458fd8ed 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java @@ -9,9 +9,9 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorRef; import akka.actor.ActorSelection; +import com.google.common.base.Optional; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Map.Entry; import org.opendaylight.controller.cluster.datastore.messages.EnableNotification; import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListener; @@ -22,7 +22,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory, DataTreeCandidate> { +final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory, Optional> { private static final Logger LOG = LoggerFactory.getLogger(DataTreeChangeListenerSupport.class); private final ArrayList delayedRegistrations = new ArrayList<>(); private final Collection actors = new ArrayList<>(); @@ -32,7 +33,12 @@ final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory registration; - final DataTreeCandidate event; if (!isLeader) { LOG.debug("{}: Shard is not the leader - delaying registration", persistenceId()); @@ -60,11 +60,12 @@ final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory, DataTreeCandidate> res = createDelegate(registerTreeChangeListener); + final Entry, Optional> res = + createDelegate(registerTreeChangeListener); registration = res.getKey(); - event = res.getValue(); + getShard().getDataStore().notifyOfInitialData(registerTreeChangeListener.getPath(), + registration.getInstance(), res.getValue()); } ActorRef listenerRegistration = createActor(DataTreeChangeListenerRegistrationActor.props(registration)); @@ -73,13 +74,10 @@ final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory, DataTreeCandidate> createDelegate(final RegisterDataTreeChangeListener message) { + Entry, Optional> createDelegate(final RegisterDataTreeChangeListener message) { ActorSelection dataChangeListenerPath = selectActor(message.getDataTreeChangeListenerPath()); // Notify the listener if notifications should be enabled or not