Skip to content

Commit

Permalink
Revert "develop-optimize-table (alibaba#13119)"
Browse files Browse the repository at this point in the history
This reverts commit 1e889ea.
  • Loading branch information
Jevgens authored Feb 20, 2025
1 parent 1e889ea commit 3c3008d
Show file tree
Hide file tree
Showing 8 changed files with 228 additions and 141 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,14 @@
import com.alibaba.nacos.config.server.service.ConfigChangePublisher;
import com.alibaba.nacos.config.server.service.ConfigOperationService;
import com.alibaba.nacos.config.server.service.ConfigSubService;
import com.alibaba.nacos.config.server.service.repository.ConfigInfoBetaPersistService;
import com.alibaba.nacos.config.server.service.repository.ConfigInfoGrayPersistService;
import com.alibaba.nacos.config.server.service.repository.ConfigInfoPersistService;
import com.alibaba.nacos.config.server.service.trace.ConfigTraceService;
import com.alibaba.nacos.config.server.utils.GroupKey;
import com.alibaba.nacos.config.server.utils.MD5Util;
import com.alibaba.nacos.config.server.utils.ParamUtils;
import com.alibaba.nacos.config.server.utils.PropertyUtil;
import com.alibaba.nacos.config.server.utils.RequestUtil;
import com.alibaba.nacos.config.server.utils.TimeUtils;
import com.alibaba.nacos.config.server.utils.YamlParserUtil;
Expand Down Expand Up @@ -125,6 +127,8 @@ public class ConfigController {

private ConfigInfoPersistService configInfoPersistService;

private ConfigInfoBetaPersistService configInfoBetaPersistService;

private ConfigInfoGrayPersistService configInfoGrayPersistService;

private NamespacePersistService namespacePersistService;
Expand All @@ -135,13 +139,14 @@ public class ConfigController {

public ConfigController(ConfigServletInner inner, ConfigOperationService configOperationService,
ConfigSubService configSubService, ConfigInfoPersistService configInfoPersistService,
NamespacePersistService namespacePersistService,
NamespacePersistService namespacePersistService, ConfigInfoBetaPersistService configInfoBetaPersistService,
ConfigInfoGrayPersistService configInfoGrayPersistService) {
this.inner = inner;
this.configOperationService = configOperationService;
this.configSubService = configSubService;
this.configInfoPersistService = configInfoPersistService;
this.namespacePersistService = namespacePersistService;
this.configInfoBetaPersistService = configInfoBetaPersistService;
this.configInfoGrayPersistService = configInfoGrayPersistService;
}

Expand Down Expand Up @@ -459,16 +464,25 @@ public Page<ConfigInfo> fuzzySearchConfig(@RequestParam("dataId") String dataId,
@Secured(action = ActionTypes.WRITE, signType = SignType.CONFIG)
public RestResult<Boolean> stopBeta(HttpServletRequest httpServletRequest,
@RequestParam(value = "dataId") String dataId, @RequestParam(value = "group") String group,
@RequestParam(value = "tenant", required = false, defaultValue = StringUtils.EMPTY) String tenant,
@RequestParam(value = "srcUser", required = false, defaultValue = StringUtils.EMPTY) String srcUser) {
@RequestParam(value = "tenant", required = false, defaultValue = StringUtils.EMPTY) String tenant) {
String remoteIp = getRemoteIp(httpServletRequest);
String requestIpApp = RequestUtil.getAppName(httpServletRequest);
try {

configOperationService.deleteConfig(dataId, group, tenant, BetaGrayRule.TYPE_BETA, remoteIp, srcUser);
configInfoGrayPersistService.removeConfigInfoGray(dataId, group, tenant, BetaGrayRule.TYPE_BETA, remoteIp,
RequestUtil.getSrcUserName(httpServletRequest));
} catch (Throwable e) {
LOGGER.error("remove beta data error", e);
return RestResultUtils.failed(500, false, "remove beta data error");
}
ConfigTraceService.logPersistenceEvent(dataId, group, tenant, requestIpApp, System.currentTimeMillis(),
remoteIp, ConfigTraceService.PERSISTENCE_EVENT_BETA, ConfigTraceService.PERSISTENCE_TYPE_REMOVE, null);

if (PropertyUtil.isGrayCompatibleModel()) {
configInfoBetaPersistService.removeConfigInfo4Beta(dataId, group, tenant);
}
ConfigChangePublisher.notifyConfigChange(
new ConfigDataChangeEvent(dataId, group, tenant, BetaGrayRule.TYPE_BETA, System.currentTimeMillis()));

return RestResultUtils.success("stop beta ok", true);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,11 @@

package com.alibaba.nacos.config.server.service;

import com.alibaba.nacos.api.exception.api.NacosApiException;
import com.alibaba.nacos.api.model.v2.ErrorCode;
import com.alibaba.nacos.api.utils.NetUtils;
import com.alibaba.nacos.common.utils.StringUtils;
import com.alibaba.nacos.common.utils.ThreadUtils;
import com.alibaba.nacos.config.server.model.ConfigInfo;
import com.alibaba.nacos.config.server.model.ConfigInfoBetaWrapper;
import com.alibaba.nacos.config.server.model.ConfigInfoGrayWrapper;
import com.alibaba.nacos.config.server.model.ConfigInfoTagWrapper;
import com.alibaba.nacos.config.server.model.ConfigOperateResult;
import com.alibaba.nacos.config.server.model.ConfigRequestInfo;
import com.alibaba.nacos.config.server.model.form.ConfigForm;
import com.alibaba.nacos.config.server.model.gray.BetaGrayRule;
import com.alibaba.nacos.config.server.model.gray.ConfigGrayPersistInfo;
import com.alibaba.nacos.config.server.model.gray.GrayRuleManager;
Expand All @@ -36,20 +29,15 @@
import com.alibaba.nacos.config.server.service.repository.ConfigInfoGrayPersistService;
import com.alibaba.nacos.config.server.service.repository.ConfigInfoTagPersistService;
import com.alibaba.nacos.config.server.utils.PropertyUtil;
import com.alibaba.nacos.core.namespace.repository.NamespacePersistService;
import com.alibaba.nacos.persistence.model.Page;
import com.alibaba.nacos.sys.env.EnvUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

import static com.alibaba.nacos.config.server.model.gray.GrayRuleManager.SPLIT;
import static com.alibaba.nacos.config.server.utils.LogUtil.DEFAULT_LOG;
import static com.alibaba.nacos.config.server.utils.PropertyUtil.GRAY_MIGRATE_FLAG;

Expand All @@ -61,123 +49,28 @@
@Service
public class ConfigGrayModelMigrateService {

private static final Logger LOGGER = LoggerFactory.getLogger(ConfigGrayModelMigrateService.class);

ConfigInfoBetaPersistService configInfoBetaPersistService;

ConfigInfoTagPersistService configInfoTagPersistService;

ConfigInfoGrayPersistService configInfoGrayPersistService;

NamespacePersistService namespacePersistService;

boolean oldTableVersion = false;

public ConfigGrayModelMigrateService(ConfigInfoBetaPersistService configInfoBetaPersistService,
ConfigInfoTagPersistService configInfoTagPersistService,
ConfigInfoGrayPersistService configInfoGrayPersistService,
NamespacePersistService namespacePersistService) {
ConfigInfoGrayPersistService configInfoGrayPersistService) {
this.configInfoBetaPersistService = configInfoBetaPersistService;
this.configInfoGrayPersistService = configInfoGrayPersistService;
this.configInfoTagPersistService = configInfoTagPersistService;
this.namespacePersistService = namespacePersistService;
}

/**
* migrate beta&tag to gray .
*/
@PostConstruct
public void migrate() throws Exception {
oldTableVersion = namespacePersistService.isExistTable("config_info_beta");
if (!PropertyUtil.isGrayCompatibleModel() || !oldTableVersion) {
return;
}
doCheckMigrate();
}

/**
* handler tag v1 config.
*
* @param configForm configForm.
* @param configInfo configInfo.
* @param configRequestInfo configRequestInfo.
* @throws NacosApiException NacosApiException.
*/
public void persistTagv1(ConfigForm configForm, ConfigInfo configInfo, ConfigRequestInfo configRequestInfo)
throws NacosApiException {
if (!PropertyUtil.isGrayCompatibleModel() || !oldTableVersion) {
return;
}

if (StringUtils.isNotBlank(configRequestInfo.getCasMd5())) {
ConfigOperateResult configOperateResult = configInfoTagPersistService.insertOrUpdateTagCas(configInfo,
configForm.getTag(), configRequestInfo.getSrcIp(), configForm.getSrcUser());
if (!configOperateResult.isSuccess()) {
LOGGER.warn(
"[cas-publish-tag-config-fail] srcIp = {}, dataId= {}, casMd5 = {}, msg = server md5 may have changed.",
configRequestInfo.getSrcIp(), configForm.getDataId(), configRequestInfo.getCasMd5());
throw new NacosApiException(HttpStatus.INTERNAL_SERVER_ERROR.value(), ErrorCode.RESOURCE_CONFLICT,
"Cas publish tag config fail, server md5 may have changed.");
}
} else {
configInfoTagPersistService.insertOrUpdateTag(configInfo, configForm.getTag(), configRequestInfo.getSrcIp(),
configForm.getSrcUser());
}
}

/**
* handle old beta.
*
* @param configForm configForm.
* @param configInfo configInfo.
* @param configRequestInfo configRequestInfo.
* @throws NacosApiException NacosApiException.
*/
public void persistBeta(ConfigForm configForm, ConfigInfo configInfo, ConfigRequestInfo configRequestInfo)
throws NacosApiException {
if (!PropertyUtil.isGrayCompatibleModel() || !oldTableVersion) {
return;
}
ConfigOperateResult configOperateResult = null;
// beta publish
if (StringUtils.isNotBlank(configRequestInfo.getCasMd5())) {
configOperateResult = configInfoBetaPersistService.insertOrUpdateBetaCas(configInfo,
configRequestInfo.getBetaIps(), configRequestInfo.getSrcIp(), configForm.getSrcUser());
if (!configOperateResult.isSuccess()) {
LOGGER.warn(
"[cas-publish-beta-config-fail] srcIp = {}, dataId= {}, casMd5 = {}, msg = server md5 may have changed.",
configRequestInfo.getSrcIp(), configForm.getDataId(), configRequestInfo.getCasMd5());
throw new NacosApiException(HttpStatus.INTERNAL_SERVER_ERROR.value(), ErrorCode.RESOURCE_CONFLICT,
"Cas publish beta config fail, server md5 may have changed.");
}
} else {
configInfoBetaPersistService.insertOrUpdateBeta(configInfo, configRequestInfo.getBetaIps(),
configRequestInfo.getSrcIp(), configForm.getSrcUser());
}
}

/**
* delete beta and tag.
*
* @param dataId dataId.
* @param group group.
* @param namespaceId namespaceId.
* @param grayName grayName.
* @param clientIp clientIp.
* @param srcUser srcUser.
*/
public void deleteConfigGrayV1(String dataId, String group, String namespaceId, String grayName, String clientIp,
String srcUser) {
if (!PropertyUtil.isGrayCompatibleModel() || !oldTableVersion) {
return;
if (PropertyUtil.isGrayCompatibleModel()) {
doCheckMigrate();
}
if (BetaGrayRule.TYPE_BETA.equals(grayName)) {
configInfoBetaPersistService.removeConfigInfo4Beta(dataId, group, namespaceId);
} else if (grayName.startsWith(TagGrayRule.TYPE_TAG + SPLIT)) {
configInfoTagPersistService.removeConfigInfoTag(dataId, group, namespaceId, grayName.substring(4), clientIp,
srcUser);
}

}

/**
Expand Down
Loading

0 comments on commit 3c3008d

Please sign in to comment.