X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=inline;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FDefaultShardDataTreeChangeListenerPublisher.java;h=e17e3faae94fbc864814423542b87ccbb6e8e333;hb=75391ff5ac6e463936716ae78e74c1cf0a5a58a2;hp=b71174d0b3efbb007810c58b5c3a5df1cce6b234;hpb=e9f0c3176a14cf9e5d2bd788872d85b86d19f68e;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java index b71174d0b3..e17e3faae9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java @@ -63,16 +63,23 @@ final class DefaultShardDataTreeChangeListenerPublisher extends AbstractDOMStore public void registerTreeChangeListener(YangInstanceIdentifier treeId, DOMDataTreeChangeListener listener, Optional initialState, Consumer> onRegistration) { + registerTreeChangeListener(treeId, listener, onRegistration); + + if (initialState.isPresent()) { + notifySingleListener(treeId, listener, initialState.get(), logContext); + } else { + listener.onInitialData(); + } + } + + void registerTreeChangeListener(YangInstanceIdentifier treeId, DOMDataTreeChangeListener listener, + Consumer> onRegistration) { LOG.debug("{}: registerTreeChangeListener: path: {}, listener: {}", logContext, treeId, listener); AbstractDOMDataTreeChangeListenerRegistration registration = super.registerTreeChangeListener(treeId, listener); onRegistration.accept(registration); - - if (initialState.isPresent()) { - notifySingleListener(treeId, listener, initialState.get(), logContext); - } } static void notifySingleListener(YangInstanceIdentifier treeId, DOMDataTreeChangeListener listener, @@ -81,7 +88,10 @@ final class DefaultShardDataTreeChangeListenerPublisher extends AbstractDOMStore DefaultShardDataTreeChangeListenerPublisher publisher = new DefaultShardDataTreeChangeListenerPublisher(logContext); publisher.logContext = logContext; - publisher.registerTreeChangeListener(treeId, listener, Optional.absent(), noop -> { /* NOOP */ }); - publisher.publishChanges(state); + publisher.registerTreeChangeListener(treeId, listener); + + if (!publisher.processCandidateTree(state)) { + listener.onInitialData(); + } } }