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%2Fshardmanager%2FShardManager.java;h=05968725ccb221cd7b62b0ea38b9b66ea9e52baa;hp=9085027c50894425a7099993500327f45718a665;hb=7204c455a1636a7fc89bcd28fe9e9000eaa81b3b;hpb=afba6e0dc3885261f7f205b5957347aa0744c777 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 9085027c50..05968725cc 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 @@ -389,7 +389,11 @@ class ShardManager extends AbstractUntypedPersistentActorWithMetering { final Map configs) { LOG.debug("{} ShardManager : {}, resolving added configs : {}", addedConfigs); - addedConfigs.forEach(id -> doCreatePrefixedShard(configs.get(id))); + addedConfigs.stream().filter(identifier + -> identifier + .getDatastoreType().equals( + ClusterUtils.toMDSalApi(datastoreContextFactory.getBaseDatastoreContext().getLogicalStoreType()))) + .forEach(id -> doCreatePrefixedShard(configs.get(id))); } private void resolveUpdates(Set maybeUpdatedConfigs) { @@ -581,6 +585,17 @@ class ShardManager extends AbstractUntypedPersistentActorWithMetering { config.getPrefix()); final String shardName = shardId.getShardName(); + if (localShards.containsKey(shardName)) { + LOG.debug("{}: Received create for an already existing shard {}", persistenceId(), shardName); + final PrefixShardConfiguration existing = + configuration.getAllPrefixShardConfigurations().get(config.getPrefix()); + + if (existing != null && existing.equals(config)) { + // we don't have to do nothing here + return; + } + } + configuration.addPrefixShardConfiguration(config); final Builder builder = newShardDatastoreContextBuilder(shardName);