Skip to content

Commit

Permalink
fix reconciliation mechanism of gray configuration.(#12217
Browse files Browse the repository at this point in the history
  • Loading branch information
MatthewAden committed Sep 11, 2024
1 parent 93d1881 commit ea5d0c5
Show file tree
Hide file tree
Showing 10 changed files with 47 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,13 @@ public class Constants {

public static final String NACOS_PERSIST_ENCODE_KEY = "nacosPersistEncodingKey";

/**
* config publish type.
*/
public static final String FORMAL = "formal";

public static final String GRAY = "gray";

static String getPersistEncode() {
String persistEncode = System.getenv(NACOS_PERSIST_ENCODE_KEY);
if (StringUtils.isBlank(persistEncode)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,14 @@ public void run() {

while (true) {
List<ConfigHistoryInfo> configDeleted = historyConfigInfoPersistService.findDeletedConfig(startTime,
deleteCursorId, pageSize, "formal");
deleteCursorId, pageSize, Constants.FORMAL);
for (ConfigHistoryInfo historyInfo : configDeleted) {
if (configInfoPersistService.findConfigInfoState(historyInfo.getDataId(), historyInfo.getGroup(),
historyInfo.getTenant()) == null) {
ConfigCacheService.remove(historyInfo.getDataId(), historyInfo.getGroup(),
historyInfo.getTenant());
LogUtil.DEFAULT_LOG.info("[dump-delete-ok] {}",
new Object[] {GroupKey2.getKey(historyInfo.getDataId(), historyInfo.getGroup())});
LogUtil.DEFAULT_LOG.info("[dump-delete-ok], groupKey: {}, tenant: {}",
new Object[] {GroupKey2.getKey(historyInfo.getDataId(), historyInfo.getGroup())}, historyInfo.getTenant());
}
}
if (configDeleted.size() < pageSize) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package com.alibaba.nacos.config.server.service.dump;

import com.alibaba.nacos.common.utils.MD5Utils;
import com.alibaba.nacos.common.utils.StringUtils;
import com.alibaba.nacos.config.server.constant.Constants;
import com.alibaba.nacos.config.server.model.ConfigHistoryInfo;
import com.alibaba.nacos.config.server.model.ConfigInfoGrayWrapper;
Expand Down Expand Up @@ -73,15 +74,21 @@ public void run() {
long deleteCursorId = 0L;
while (true) {
List<ConfigHistoryInfo> historyConfigDeleted = historyConfigInfoPersistService.findDeletedConfig(startTime,
deleteCursorId, pageSize, "gray");
deleteCursorId, pageSize, Constants.GRAY);
for (ConfigHistoryInfo historyInfo : historyConfigDeleted) {
String grayName = extractGrayName(historyInfo.getExtraInfo());
if (StringUtils.isBlank(grayName)) {
grayName = StringUtils.EMPTY;
LogUtil.DEFAULT_LOG.warn("GrayName is null or empty");
}

ConfigInfoStateWrapper configInfoStateWrapper = configInfoGrayPersistService.findConfigInfo4GrayState(historyInfo.getDataId(),
historyInfo.getGroup(), historyInfo.getTenant(), extractGrayName(historyInfo.getExtraInfo()));
historyInfo.getGroup(), historyInfo.getTenant(), grayName);
if (configInfoStateWrapper == null) {
ConfigCacheService.remove(historyInfo.getDataId(), historyInfo.getGroup(),
historyInfo.getTenant());
LogUtil.DEFAULT_LOG.info("[dump-delete-ok] {}",
GroupKey2.getKey(historyInfo.getDataId(), historyInfo.getGroup()));
ConfigCacheService.removeGray(historyInfo.getDataId(), historyInfo.getGroup(),
historyInfo.getTenant(), grayName);
LogUtil.DEFAULT_LOG.info("[dump-gray-delete-ok], groupKey: {}, tenant: {}, grayName: {}",
GroupKey2.getKey(historyInfo.getDataId(), historyInfo.getGroup()), historyInfo.getTenant(), grayName);
}
}
if (historyConfigDeleted.size() < pageSize) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,10 @@ public interface HistoryConfigInfoPersistService {
* @param time time
* @param ops ops type
* @param publishType publish type
* @param extraInfo extra config info
* @param extInfo extra config info
*/
void insertConfigHistoryAtomic(long id, ConfigInfo configInfo, String srcIp, String srcUser, final Timestamp time,
String ops, String publishType, String extraInfo);
String ops, String publishType, String extInfo);
//------------------------------------------delete---------------------------------------------//

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ public ConfigOperateResult addConfigInfo4Gray(ConfigInfo configInfo, String gray

Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(hisId, configInfo, srcIp, srcUser, now, "I",
"gray", ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(grayNameTmp, grayRuleTmp, srcUser));
Constants.GRAY, ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(grayNameTmp, grayRuleTmp, srcUser));

EmbeddedStorageContextUtils.onModifyConfigGrayInfo(configInfo, grayNameTmp, grayRuleTmp, srcIp, now);
databaseOperate.blockUpdate();
Expand Down Expand Up @@ -224,7 +224,7 @@ public void removeConfigInfoGray(final String dataId, final String group, final
Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo4Gray.getId(),
oldConfigAllInfo4Gray, srcIp, srcUser, now,
"D", "gray", ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(),
"D", Constants.GRAY, ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(),
oldConfigAllInfo4Gray.getGrayRule(), oldConfigAllInfo4Gray.getSrcUser()));

EmbeddedStorageContextUtils.onDeleteConfigGrayInfo(tenantTmp, group, dataId, grayNameTmp, srcIp);
Expand Down Expand Up @@ -269,7 +269,7 @@ public ConfigOperateResult updateConfigInfo4Gray(ConfigInfo configInfo, String g

Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo4Gray.getId(), oldConfigAllInfo4Gray,
srcIp, srcUser, now, "U", "gray", ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(), oldConfigAllInfo4Gray.getGrayRule(), oldConfigAllInfo4Gray.getSrcUser()));
srcIp, srcUser, now, "U", Constants.GRAY, ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(), oldConfigAllInfo4Gray.getGrayRule(), oldConfigAllInfo4Gray.getSrcUser()));

EmbeddedStorageContextUtils.onModifyConfigGrayInfo(configInfo, grayNameTmp, grayRuleTmp, srcIp, time);
EmbeddedStorageContextHolder.addSqlContext(sql, args);
Expand Down Expand Up @@ -326,7 +326,7 @@ public ConfigOperateResult updateConfigInfo4GrayCas(ConfigInfo configInfo, Strin

Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo4Gray.getId(), oldConfigAllInfo4Gray,
srcIp, srcUser, now, "U", "gray", ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(), oldConfigAllInfo4Gray.getGrayRule(), oldConfigAllInfo4Gray.getSrcUser()));
srcIp, srcUser, now, "U", Constants.GRAY, ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(), oldConfigAllInfo4Gray.getGrayRule(), oldConfigAllInfo4Gray.getSrcUser()));

EmbeddedStorageContextUtils.onModifyConfigGrayInfo(configInfo, grayNameTmp, grayRuleTmp, srcIp, time);
EmbeddedStorageContextHolder.addSqlContext(mapperResult.getSql(), mapperResult.getParamList().toArray());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ private ConfigOperateResult addConfigInfo(final String srcIp, final String srcUs

Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(hisId, configInfo, srcIp, srcUser, now, "I",
"formal", ExtraConfigInfoUtil.getExtraInfoFromAdvanceInfoMap(configAdvanceInfo, srcUser));
Constants.FORMAL, ExtraConfigInfoUtil.getExtraInfoFromAdvanceInfoMap(configAdvanceInfo, srcUser));

EmbeddedStorageContextUtils.onModifyConfigInfo(configInfo, srcIp, now);
databaseOperate.blockUpdate(consumer);
Expand Down Expand Up @@ -410,7 +410,7 @@ public void removeConfigInfo(final String dataId, final String group, final Stri
removeConfigInfoAtomic(dataId, group, tenantTmp, srcIp, srcUser);
removeTagByIdAtomic(oldConfigAllInfo.getId());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo.getId(), oldConfigAllInfo, srcIp,
srcUser, time, "D", "formal", ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));
srcUser, time, "D", Constants.FORMAL, ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));

EmbeddedStorageContextUtils.onDeleteConfigInfo(tenantTmp, group, dataId, srcIp, time);

Expand Down Expand Up @@ -439,7 +439,7 @@ public List<ConfigAllInfo> removeConfigInfoByIds(final List<Long> ids, final Str
for (ConfigAllInfo configAllInfo : oldConfigAllInfoList) {
removeTagByIdAtomic(configAllInfo.getId());
historyConfigInfoPersistService.insertConfigHistoryAtomic(configAllInfo.getId(), configAllInfo,
srcIp, srcUser, time, "D", "formal",
srcIp, srcUser, time, "D", Constants.FORMAL,
ExtraConfigInfoUtil.getExtraInfoFromAllInfo(configAllInfo));
}
}
Expand Down Expand Up @@ -533,7 +533,7 @@ public ConfigOperateResult updateConfigInfo(final ConfigInfo configInfo, final S

Timestamp time = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo.getId(), oldConfigAllInfo, srcIp,
srcUser, time, "U", "formal", ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));
srcUser, time, "U", Constants.FORMAL, ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));
EmbeddedStorageContextUtils.onModifyConfigInfo(configInfo, srcIp, time);
databaseOperate.blockUpdate();
return getConfigInfoOperateResult(configInfo.getDataId(), configInfo.getGroup(), tenantTmp);
Expand Down Expand Up @@ -579,7 +579,7 @@ public ConfigOperateResult updateConfigInfoCas(final ConfigInfo configInfo, fina

Timestamp time = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo.getId(), oldConfigAllInfo, srcIp,
srcUser, time, "U", "formal", ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));
srcUser, time, "U", Constants.FORMAL, ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));
EmbeddedStorageContextUtils.onModifyConfigInfo(configInfo, srcIp, time);
boolean success = databaseOperate.blockUpdate();
if (success) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public <E> PaginationHelper<E> createPaginationHelper() {

@Override
public void insertConfigHistoryAtomic(long configHistoryId, ConfigInfo configInfo, String srcIp, String srcUser,
final Timestamp time, String ops, String publishType, String extraInfo) {
final Timestamp time, String ops, String publishType, String extInfo) {
String appNameTmp = StringUtils.defaultEmptyIfBlank(configInfo.getAppName());
String tenantTmp = StringUtils.defaultEmptyIfBlank(configInfo.getTenant());
final String md5Tmp = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE);
Expand All @@ -101,7 +101,7 @@ public void insertConfigHistoryAtomic(long configHistoryId, ConfigInfo configInf
Arrays.asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "md5", "src_ip",
"src_user", "gmt_modified", "op_type", "publish_type", "ext_info", "encrypted_data_key"));
final Object[] args = new Object[] {configHistoryId, configInfo.getDataId(), configInfo.getGroup(), tenantTmp,
appNameTmp, configInfo.getContent(), md5Tmp, srcIp, srcUser, time, ops, publishTypeTmp, extraInfo, encryptedDataKey};
appNameTmp, configInfo.getContent(), md5Tmp, srcIp, srcUser, time, ops, publishTypeTmp, extInfo, encryptedDataKey};

EmbeddedStorageContextHolder.addSqlContext(sql, args);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ public ConfigOperateResult addConfigInfo4Gray(ConfigInfo configInfo, String gray

Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(0, configInfo, srcIp, srcUser, now, "I",
"gray", ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(grayNameTmp, grayRuleTmp, srcUser));
Constants.GRAY, ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(grayNameTmp, grayRuleTmp, srcUser));

return getGrayOperateResult(configInfo.getDataId(), configInfo.getGroup(), tenantTmp, grayNameTmp);
} catch (Exception e) {
Expand Down Expand Up @@ -214,7 +214,7 @@ protected void doInTransactionWithoutResult(TransactionStatus status) {
Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo4Gray.getId(),
oldConfigAllInfo4Gray, srcIp, srcUser, now,
"D", "gray", ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(),
"D", Constants.GRAY, ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(),
oldConfigAllInfo4Gray.getGrayRule(), oldConfigAllInfo4Gray.getSrcUser()));
} catch (CannotGetJdbcConnectionException e) {
LogUtil.FATAL_LOG.error("[db-error] " + e, e);
Expand Down Expand Up @@ -254,7 +254,7 @@ public ConfigOperateResult updateConfigInfo4Gray(ConfigInfo configInfo, String g
Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo4Gray.getId(),
oldConfigAllInfo4Gray, srcIp, srcUser, now,
"U", "gray", ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(),
"U", Constants.GRAY, ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(),
oldConfigAllInfo4Gray.getGrayRule(), oldConfigAllInfo4Gray.getSrcUser()));

return getGrayOperateResult(configInfo.getDataId(), configInfo.getGroup(), tenantTmp, grayNameTmp);
Expand Down Expand Up @@ -307,7 +307,7 @@ public ConfigOperateResult updateConfigInfo4GrayCas(ConfigInfo configInfo, Strin

Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo4Gray.getId(), oldConfigAllInfo4Gray, srcIp, srcUser, now,
"U", "gray", ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(),
"U", Constants.GRAY, ExtraConfigInfoUtil.getExtraInfoFromGrayInfo(oldConfigAllInfo4Gray.getGrayName(),
oldConfigAllInfo4Gray.getGrayRule(), oldConfigAllInfo4Gray.getSrcUser()));

if (success) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ public ConfigOperateResult addConfigInfo(final String srcIp, final String srcUse
Timestamp now = new Timestamp(System.currentTimeMillis());

historyConfigInfoPersistService.insertConfigHistoryAtomic(0, configInfo, srcIp, srcUser, now, "I",
"formal", ExtraConfigInfoUtil.getExtraInfoFromAdvanceInfoMap(configAdvanceInfo, srcUser));
Constants.FORMAL, ExtraConfigInfoUtil.getExtraInfoFromAdvanceInfoMap(configAdvanceInfo, srcUser));
ConfigInfoStateWrapper configInfoCurrent = this.findConfigInfoState(configInfo.getDataId(),
configInfo.getGroup(), configInfo.getTenant());
if (configInfoCurrent == null) {
Expand Down Expand Up @@ -401,7 +401,7 @@ public Boolean doInTransaction(TransactionStatus status) {
removeConfigInfoAtomic(dataId, group, tenant, srcIp, srcUser);
removeTagByIdAtomic(oldConfigAllInfo.getId());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo.getId(), oldConfigAllInfo,
srcIp, srcUser, time, "D", "formal", ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));
srcIp, srcUser, time, "D", Constants.FORMAL, ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));
}
} catch (CannotGetJdbcConnectionException e) {
LogUtil.FATAL_LOG.error("[db-error] " + e, e);
Expand Down Expand Up @@ -431,7 +431,7 @@ public List<ConfigAllInfo> doInTransaction(TransactionStatus status) {
for (ConfigAllInfo configAllInfo : oldConfigAllInfoList) {
removeTagByIdAtomic(configAllInfo.getId());
historyConfigInfoPersistService.insertConfigHistoryAtomic(configAllInfo.getId(),
configAllInfo, srcIp, srcUser, time, "D", "formal",
configAllInfo, srcIp, srcUser, time, "D", Constants.FORMAL,
ExtraConfigInfoUtil.getExtraInfoFromAllInfo(configAllInfo));
}
}
Expand Down Expand Up @@ -528,7 +528,7 @@ public ConfigOperateResult updateConfigInfo(final ConfigInfo configInfo, final S

Timestamp now = new Timestamp(System.currentTimeMillis());
historyConfigInfoPersistService.insertConfigHistoryAtomic(oldConfigAllInfo.getId(), oldConfigAllInfo, srcIp, srcUser,
now, "U", "formal", ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));
now, "U", Constants.FORMAL, ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldConfigAllInfo));
return getConfigInfoOperateResult(configInfo.getDataId(), configInfo.getGroup(),
configInfo.getTenant());
} catch (CannotGetJdbcConnectionException e) {
Expand Down Expand Up @@ -583,7 +583,7 @@ public ConfigOperateResult updateConfigInfoCas(final ConfigInfo configInfo, fina
Timestamp now = new Timestamp(System.currentTimeMillis());

historyConfigInfoPersistService.insertConfigHistoryAtomic(oldAllConfigInfo.getId(), oldAllConfigInfo, srcIp, srcUser, now,
"U", "formal", ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldAllConfigInfo));
"U", Constants.FORMAL, ExtraConfigInfoUtil.getExtraInfoFromAllInfo(oldAllConfigInfo));
ConfigInfoStateWrapper configInfoLast = this.findConfigInfoState(configInfo.getDataId(),
configInfo.getGroup(), configInfo.getTenant());
if (configInfoLast == null) {
Expand Down
Loading

0 comments on commit ea5d0c5

Please sign in to comment.