in dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java [359:393]
public void updateBalance(BalancingDTO balancingDTO) {
String id = ConvertUtil.getIdFromDTO(balancingDTO);
String scope = ConvertUtil.getScopeFromDTO(balancingDTO);
String path = getPath(id);
String config = dynamicConfiguration.getConfig(path);
BalancingDTO oldBalancing = null;
if (config != null) {
OverrideDTO overrideDTO = YamlParser.loadObject(config, OverrideDTO.class);
List<OverrideConfig> configs = overrideDTO.getConfigs();
if (configs != null && configs.size() > 0) {
for (OverrideConfig overrideConfig : configs) {
if (Constants.BALANCING.equals(overrideConfig.getType())) {
if (Constants.SERVICE.equals(overrideDTO.getScope())) {
oldBalancing = OverrideUtils.configtoBalancingDTO(overrideConfig, Constants.SERVICE, overrideDTO.getKey());
}
int index = configs.indexOf(overrideConfig);
OverrideConfig newConfig = OverrideUtils.balancingDTOtoConfig(balancingDTO);
configs.set(index, newConfig);
break;
}
}
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(overrideDTO));
} else {
//throw exception
}
} else {
//throw exception
}
//for 2.6
if (oldBalancing != null) {
unregisterBalancing(oldBalancing);
registerBalancing(balancingDTO);
}
}