in config/src/main/java/com/alibaba/nacos/config/server/service/ConfigMigrateService.java [384:436]
public void checkChangedConfigMigrateState(ConfigInfoStateWrapper changedConfigInfoStateWrapper) {
String tenant = changedConfigInfoStateWrapper.getTenant();
if (!ConfigCompatibleConfig.getInstance().isNamespaceCompatibleMode()) {
return;
}
if (!StringUtils.equals(tenant, namespacePublic) && StringUtils.isNotBlank(tenant)) {
return;
}
String targetTenant = StringUtils.EMPTY;
if (StringUtils.isBlank(tenant)) {
targetTenant = namespacePublic;
}
ConfigAllInfo changedConfigAllInfo = configInfoPersistService.findConfigAllInfo(
changedConfigInfoStateWrapper.getDataId(), changedConfigInfoStateWrapper.getGroup(), tenant);
ConfigAllInfo targetConfigAllInfo = configInfoPersistService.findConfigAllInfo(
changedConfigInfoStateWrapper.getDataId(), changedConfigInfoStateWrapper.getGroup(), targetTenant);
try {
CONFIG_MIGRATE_FLAG.set(true);
if (changedConfigAllInfo.getCreateUser().equals(NAMESPACE_MIGRATE_SRC_USER)) {
if (targetConfigAllInfo == null) {
configInfoPersistService.removeConfigInfo(changedConfigAllInfo.getDataId(),
changedConfigAllInfo.getGroup(), tenant, null, NAMESPACE_MIGRATE_SRC_USER);
} else if (!targetConfigAllInfo.getMd5().equals(changedConfigAllInfo.getMd5())) {
if (targetConfigAllInfo.getModifyTime() > changedConfigAllInfo.getModifyTime()
|| !StringUtils.equals(targetConfigAllInfo.getCreateUser(), NAMESPACE_MIGRATE_SRC_USER)) {
targetConfigAllInfo.setTenant(tenant);
configInfoPersistService.updateConfigInfo(targetConfigAllInfo, null, NAMESPACE_MIGRATE_SRC_USER,
null);
}
}
} else {
if (targetConfigAllInfo == null) {
changedConfigAllInfo.setTenant(targetTenant);
configInfoPersistService.addConfigInfo(null, NAMESPACE_MIGRATE_SRC_USER, changedConfigAllInfo,
null);
} else if (!targetConfigAllInfo.getMd5().equals(changedConfigAllInfo.getMd5())) {
if (targetConfigAllInfo.getModifyTime() > changedConfigAllInfo.getModifyTime()
&& !StringUtils.equals(targetConfigAllInfo.getCreateUser(), NAMESPACE_MIGRATE_SRC_USER)) {
targetConfigAllInfo.setTenant(tenant);
configInfoPersistService.updateConfigInfo(targetConfigAllInfo, null, NAMESPACE_MIGRATE_SRC_USER,
null);
} else if (targetConfigAllInfo.getModifyTime() < changedConfigAllInfo.getModifyTime()) {
changedConfigAllInfo.setTenant(targetTenant);
configInfoPersistService.updateConfigInfo(changedConfigAllInfo, null,
NAMESPACE_MIGRATE_SRC_USER, null);
}
}
}
} finally {
CONFIG_MIGRATE_FLAG.set(false);
}
}