From 39b7a263d64559bc4f593726f56aa38ab9cc0b1c Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 11 Sep 2017 16:03:58 +0200 Subject: [PATCH] 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 --- .../databroker/actors/dds/ModuleShardBackendResolver.java | 3 +++ .../cluster/datastore/shardmanager/ShardManager.java | 3 +++ 2 files changed, 6 insertions(+) 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()); -- 2.36.6