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%2Fconfig%2FConfigurationImpl.java;h=d88301c308d39a7944d3d058ed4cb5825c5d60f3;hp=b7bcc59f2ffd9e6c4f0a3eff0a8dc0afbf69e164;hb=285e83f59f15a4a614d423a3780a607d562d030b;hpb=482caffb6cc503ab1d156109a5dba8c2fe675f3d diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationImpl.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationImpl.java index b7bcc59f2f..d88301c308 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationImpl.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationImpl.java @@ -35,7 +35,12 @@ public class ConfigurationImpl implements Configuration { } public ConfigurationImpl(final ModuleShardConfigProvider provider) { - this.moduleConfigMap = ImmutableMap.copyOf(provider.retrieveModuleConfigs(this)); + ImmutableMap.Builder mapBuilder = ImmutableMap.builder(); + for(Map.Entry e: provider.retrieveModuleConfigs(this).entrySet()) { + mapBuilder.put(e.getKey(), e.getValue().build()); + } + + this.moduleConfigMap = mapBuilder.build(); this.allShardNames = createAllShardNames(moduleConfigMap.values()); this.namespaceToModuleName = createNamespaceToModuleName(moduleConfigMap.values()); @@ -135,14 +140,12 @@ public class ConfigurationImpl implements Configuration { public synchronized void addModuleShardConfiguration(ModuleShardConfiguration config) { Preconditions.checkNotNull(config, "ModuleShardConfiguration should not be null"); - ModuleConfig moduleConfig = new ModuleConfig(config.getModuleName()); - moduleConfig.setNameSpace(config.getNamespace().toASCIIString()); - moduleConfig.setShardStrategy(createShardStrategy(config.getModuleName(), config.getShardStrategyName())); - - moduleConfig.addShardConfig(config.getShardName(), ImmutableSet.copyOf(config.getShardMemberNames())); + ModuleConfig moduleConfig = ModuleConfig.builder(config.getModuleName()). + nameSpace(config.getNamespace().toASCIIString()). + shardStrategy(createShardStrategy(config.getModuleName(), config.getShardStrategyName())). + shardConfig(config.getShardName(), config.getShardMemberNames()).build(); - moduleConfigMap = ImmutableMap.builder().putAll(moduleConfigMap). - put(config.getModuleName(), moduleConfig).build(); + updateModuleConfigMap(moduleConfig); namespaceToModuleName = ImmutableMap.builder().putAll(namespaceToModuleName). put(moduleConfig.getNameSpace(), moduleConfig.getName()).build(); @@ -167,11 +170,9 @@ public class ConfigurationImpl implements Configuration { for(ModuleConfig moduleConfig: moduleConfigMap.values()) { ShardConfig shardConfig = moduleConfig.getShardConfig(shardName); if(shardConfig != null) { - ModuleConfig newModuleConfig = new ModuleConfig(moduleConfig); - Set replica = new HashSet<>(shardConfig.getReplicas()); - replica.add(newMemberName); - newModuleConfig.addShardConfig(shardName, ImmutableSet.copyOf(replica)); - updateModuleConfigMap(newModuleConfig); + Set replicas = new HashSet<>(shardConfig.getReplicas()); + replicas.add(newMemberName); + updateModuleConfigMap(ModuleConfig.builder(moduleConfig).shardConfig(shardName, replicas).build()); return; } } @@ -185,20 +186,17 @@ public class ConfigurationImpl implements Configuration { for(ModuleConfig moduleConfig: moduleConfigMap.values()) { ShardConfig shardConfig = moduleConfig.getShardConfig(shardName); if(shardConfig != null) { - ModuleConfig newModuleConfig = new ModuleConfig(moduleConfig); - Set replica = new HashSet<>(shardConfig.getReplicas()); - replica.remove(newMemberName); - newModuleConfig.addShardConfig(shardName, ImmutableSet.copyOf(replica)); - updateModuleConfigMap(newModuleConfig); + Set replicas = new HashSet<>(shardConfig.getReplicas()); + replicas.remove(newMemberName); + updateModuleConfigMap(ModuleConfig.builder(moduleConfig).shardConfig(shardName, replicas).build()); return; } } } private void updateModuleConfigMap(ModuleConfig moduleConfig) { - HashMap newModuleConfigMap = new HashMap<>(moduleConfigMap); + Map newModuleConfigMap = new HashMap<>(moduleConfigMap); newModuleConfigMap.put(moduleConfig.getName(), moduleConfig); - moduleConfigMap = ImmutableMap.builder().putAll(newModuleConfigMap).build(); - return; + moduleConfigMap = ImmutableMap.copyOf(newModuleConfigMap); } }