From: Robert Varga Date: Mon, 11 Sep 2017 14:03:58 +0000 (+0200) Subject: BUG-8639: always invalidate primary info cache X-Git-Tag: release/carbon-sr2~5 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=39b7a263d64559bc4f593726f56aa38ab9cc0b1c;hp=274b3b90e7137d420245074f5d2649e520c6f7cb BUG-8639: always invalidate primary info cache When we remove local shard, make sure we invalidate the associated cache entry. Change-Id: I83d6320e7308fe9bdf9c66c928fa91198674eae1 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java index f0775ba289..ee549d3611 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java @@ -108,6 +108,9 @@ final class ModuleShardBackendResolver extends AbstractShardBackendResolver { if (failure != null) { LOG.debug("Resolution of cookie {} shard {} failed, removing state", cookie, shardName, failure); backends.remove(cookie, toInsert); + + // Remove cache state in case someone else forgot to invalidate it + flushCache(shardName); } }); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardManager.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardManager.java index 6a91bf79f6..781f7c9f74 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardManager.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardManager.java @@ -519,6 +519,9 @@ class ShardManager extends AbstractUntypedPersistentActorWithMetering { } self().tell((RunnableMessage) () -> { + // At any rate, invalidate primaryShardInfo cache + primaryShardInfoCache.remove(shardName); + shardActorsStopping.remove(shardName); notifyOnCompleteTasks(failure, result); }, ActorRef.noSender());