X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FDataTreeChangeListenerProxy.java;h=8a9b466b6ef6deed0b6db3f01ac34dc933ba58f8;hp=1a27f2e4fcdc19f2a3595764a80e00f963960ea4;hb=b00bee7547dbba0677347e991a8674f90752f6a2;hpb=6fdcecdc2ecc9f8489de7c72f0709d28b6a1da87 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxy.java index 1a27f2e4fc..8a9b466b6e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxy.java @@ -19,6 +19,7 @@ import org.opendaylight.controller.cluster.datastore.messages.CloseDataTreeChang import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListener; import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListenerReply; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; +import org.opendaylight.controller.md.sal.dom.api.ClusteredDOMDataTreeChangeListener; import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener; import org.opendaylight.yangtools.concepts.AbstractListenerRegistration; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -40,11 +41,12 @@ final class DataTreeChangeListenerProxy ext @GuardedBy("this") private ActorSelection listenerRegistrationActor; - public DataTreeChangeListenerProxy(final ActorContext actorContext, final T listener) { + DataTreeChangeListenerProxy(final ActorContext actorContext, final T listener) { super(listener); this.actorContext = Preconditions.checkNotNull(actorContext); this.dataChangeListenerActor = actorContext.getActorSystem().actorOf( - DataTreeChangeListenerActor.props(getInstance()).withDispatcher(actorContext.getNotificationDispatcherPath())); + DataTreeChangeListenerActor.props(getInstance()) + .withDispatcher(actorContext.getNotificationDispatcherPath())); } @Override @@ -63,11 +65,11 @@ final class DataTreeChangeListenerProxy ext @Override public void onComplete(final Throwable failure, final ActorRef shard) { if (failure instanceof LocalShardNotFoundException) { - LOG.debug("No local shard found for {} - DataTreeChangeListener {} at path {} " + - "cannot be registered", shardName, getInstance(), treeId); + LOG.debug("No local shard found for {} - DataTreeChangeListener {} at path {} " + + "cannot be registered", shardName, getInstance(), treeId); } else if (failure != null) { - LOG.error("Failed to find local shard {} - DataTreeChangeListener {} at path {} " + - "cannot be registered: {}", shardName, getInstance(), treeId, failure); + LOG.error("Failed to find local shard {} - DataTreeChangeListener {} at path {} " + + "cannot be registered: {}", shardName, getInstance(), treeId, failure); } else { doRegistration(shard, treeId); } @@ -95,10 +97,11 @@ final class DataTreeChangeListenerProxy ext private void doRegistration(final ActorRef shard, final YangInstanceIdentifier path) { Future future = actorContext.executeOperationAsync(shard, - new RegisterDataTreeChangeListener(path, dataChangeListenerActor), + new RegisterDataTreeChangeListener(path, dataChangeListenerActor, + getInstance() instanceof ClusteredDOMDataTreeChangeListener), actorContext.getDatastoreContext().getShardInitializationTimeout()); - future.onComplete(new OnComplete(){ + future.onComplete(new OnComplete() { @Override public void onComplete(final Throwable failure, final Object result) { if (failure != null) { @@ -114,7 +117,7 @@ final class DataTreeChangeListenerProxy ext } @VisibleForTesting - ActorSelection getListenerRegistrationActor() { + synchronized ActorSelection getListenerRegistrationActor() { return listenerRegistrationActor; }