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%2FDistributedDataStore.java;h=780f28f358ec327f5ec6ab9cace63f769695e55a;hb=eff56082a308f3be21cd4eefd03e0799a6b04714;hp=d21ea51c2a8feca7e9665dd1303f3288ec3de834;hpb=10948fbda7e6d997525cce5b4929a1e426045c52;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java index d21ea51c2a..780f28f358 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java @@ -86,18 +86,30 @@ public class DistributedDataStore implements DOMStore, SchemaContextListener, Au String shardName = ShardStrategyFactory.getStrategy(path).findShard(path); - Object result = actorContext.executeShardOperation(shardName, + Object result = actorContext.executeLocalShardOperation(shardName, new RegisterChangeListener(path, dataChangeListenerActor.path(), scope).toSerializable(), ActorContext.ASK_DURATION ); - RegisterChangeListenerReply reply = RegisterChangeListenerReply.fromSerializable(actorContext.getActorSystem(),result); - return new DataChangeListenerRegistrationProxy(actorContext.actorSelection(reply.getListenerRegistrationPath()), listener, dataChangeListenerActor); + if (result != null) { + RegisterChangeListenerReply reply = RegisterChangeListenerReply + .fromSerializable(actorContext.getActorSystem(), result); + return new DataChangeListenerRegistrationProxy(actorContext + .actorSelection(reply.getListenerRegistrationPath()), listener, + dataChangeListenerActor); + } + + LOG.debug( + "No local shard for shardName {} was found so returning a noop registration", + shardName); + return new NoOpDataChangeListenerRegistration(listener); } + + @Override public DOMStoreTransactionChain createTransactionChain() { return new TransactionChainProxy(actorContext, executor, schemaContext);