Skip to content

Commit

Permalink
1.delete aggr model
Browse files Browse the repository at this point in the history
2.simplify gray model
3.gray model upgrade compatible
  • Loading branch information
shiyiyue1102 committed Nov 11, 2024
1 parent 2537139 commit b10c024
Show file tree
Hide file tree
Showing 85 changed files with 1,150 additions and 4,107 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ public enum AbilityKey {
*/
SERVER_TEST_2("test_2", "just for junit test", AbilityMode.SERVER),

SUPPORT_NEW_GRAY_MODEL("support_new_gray_model", "support_new_gray_model", AbilityMode.SERVER),

/**
* For Test temporarily.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@
* @version $Id: ConfigChangeClusterSyncRequest.java, v 0.1 2020年08月11日 4:30 PM liuzunfei Exp $
*/
public class ConfigChangeClusterSyncRequest extends AbstractConfigRequest {

String tag;


long lastModified;

boolean isBeta;
String grayName;

boolean isBatch;
@Deprecated
boolean isBeta;

String grayName;
@Deprecated
String tag;

public boolean isBeta() {
return isBeta;
Expand All @@ -44,14 +44,6 @@ public void setBeta(boolean beta) {
isBeta = beta;
}

public boolean isBatch() {
return isBatch;
}

public void setBatch(boolean batch) {
isBatch = batch;
}

/**
* Getter method for property <tt>tag</tt>.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ private void extractAppLabels() {
HashMap<String, String> applabelsMap = new HashMap<String, String>(8) {
{
put(Constants.APPNAME, labels.get(Constants.APPNAME));
put(Constants.CONFIG_VERSION, clientVersion);
put(Constants.CLIENT_VERSION_KEY, clientVersion);
put(Constants.CLIENT_IP, clientIp);
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ void before() {
configChangeClusterSyncRequest.setTag(TAG);
configChangeClusterSyncRequest.setBeta(Boolean.TRUE);
configChangeClusterSyncRequest.setLastModified(0L);
configChangeClusterSyncRequest.setBatch(false);
configChangeClusterSyncRequest.putAllHeader(HEADERS);
requestId = injectRequestUuId(configChangeClusterSyncRequest);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ void testMapEnum() {
@Test
void testGetAllValues() {
Collection<AbilityKey> actual = AbilityKey.getAllValues(AbilityMode.SERVER);
assertEquals(4, actual.size());
assertEquals(3, actual.size());
actual = AbilityKey.getAllValues(AbilityMode.SDK_CLIENT);
assertEquals(1, actual.size());
actual = AbilityKey.getAllValues(AbilityMode.CLUSTER_CLIENT);
Expand All @@ -107,7 +107,7 @@ void testGetAllValues() {
@Test
void testGetAllNames() {
Collection<String> actual = AbilityKey.getAllNames(AbilityMode.SERVER);
assertEquals(4, actual.size());
assertEquals(3, actual.size());
actual = AbilityKey.getAllNames(AbilityMode.SDK_CLIENT);
assertEquals(1, actual.size());
actual = AbilityKey.getAllNames(AbilityMode.CLUSTER_CLIENT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,37 +34,38 @@
import com.alibaba.nacos.config.server.model.ConfigInfo4Beta;
import com.alibaba.nacos.config.server.model.ConfigInfoGrayWrapper;
import com.alibaba.nacos.config.server.model.ConfigMetadata;
import com.alibaba.nacos.config.server.model.ConfigRequestInfo;
import com.alibaba.nacos.config.server.model.GroupkeyListenserStatus;
import com.alibaba.nacos.config.server.model.gray.GrayRuleManager;
import com.alibaba.nacos.config.server.paramcheck.ConfigBlurSearchHttpParamExtractor;
import com.alibaba.nacos.config.server.paramcheck.ConfigDefaultHttpParamExtractor;
import com.alibaba.nacos.config.server.paramcheck.ConfigListenerHttpParamExtractor;
import com.alibaba.nacos.config.server.service.repository.ConfigInfoGrayPersistService;
import com.alibaba.nacos.config.server.utils.PropertyUtil;
import com.alibaba.nacos.core.paramcheck.ExtractorManager;
import com.alibaba.nacos.persistence.model.Page;
import com.alibaba.nacos.config.server.model.SameConfigPolicy;
import com.alibaba.nacos.config.server.model.SampleResult;
import com.alibaba.nacos.config.server.model.event.ConfigDataChangeEvent;
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.GrayRuleManager;
import com.alibaba.nacos.config.server.monitor.MetricsMonitor;
import com.alibaba.nacos.config.server.paramcheck.ConfigBlurSearchHttpParamExtractor;
import com.alibaba.nacos.config.server.paramcheck.ConfigDefaultHttpParamExtractor;
import com.alibaba.nacos.config.server.paramcheck.ConfigListenerHttpParamExtractor;
import com.alibaba.nacos.config.server.result.code.ResultCodeEnum;
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.core.namespace.repository.NamespacePersistService;
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;
import com.alibaba.nacos.config.server.utils.ZipUtils;
import com.alibaba.nacos.core.control.TpsControl;
import com.alibaba.nacos.core.namespace.repository.NamespacePersistService;
import com.alibaba.nacos.core.paramcheck.ExtractorManager;
import com.alibaba.nacos.persistence.model.Page;
import com.alibaba.nacos.plugin.auth.constant.ActionTypes;
import com.alibaba.nacos.plugin.auth.constant.SignType;
import com.alibaba.nacos.plugin.encryption.handler.EncryptionHandler;
Expand Down Expand Up @@ -321,8 +322,8 @@ public RestResult<Boolean> deleteConfigs(HttpServletRequest request, @RequestPar
}
for (ConfigAllInfo configInfo : configInfoList) {
ConfigChangePublisher.notifyConfigChange(
new ConfigDataChangeEvent(false, configInfo.getDataId(), configInfo.getGroup(),
configInfo.getTenant(), time.getTime()));
new ConfigDataChangeEvent(configInfo.getDataId(), configInfo.getGroup(), configInfo.getTenant(),
time.getTime()));

ConfigTraceService.logPersistenceEvent(configInfo.getDataId(), configInfo.getGroup(),
configInfo.getTenant(), null, time.getTime(), clientIp, ConfigTraceService.PERSISTENCE_EVENT,
Expand Down Expand Up @@ -426,8 +427,8 @@ public Page<ConfigInfo> fuzzySearchConfig(@RequestParam("dataId") String dataId,
@RequestParam("group") String group, @RequestParam(value = "appName", required = false) String appName,
@RequestParam(value = "tenant", required = false, defaultValue = StringUtils.EMPTY) String tenant,
@RequestParam(value = "config_tags", required = false) String configTags,
@RequestParam(value = "types", required = false) String types,
@RequestParam("pageNo") int pageNo, @RequestParam("pageSize") int pageSize) {
@RequestParam(value = "types", required = false) String types, @RequestParam("pageNo") int pageNo,
@RequestParam("pageSize") int pageSize) {
MetricsMonitor.getFuzzySearchMonitor().incrementAndGet();
Map<String, Object> configAdvanceInfo = new HashMap<>(50);
if (StringUtils.isNotBlank(appName)) {
Expand Down Expand Up @@ -465,22 +466,20 @@ public RestResult<Boolean> stopBeta(HttpServletRequest httpServletRequest,
String remoteIp = getRemoteIp(httpServletRequest);
String requestIpApp = RequestUtil.getAppName(httpServletRequest);
try {
configInfoGrayPersistService.removeConfigInfoGray(dataId, group, tenant, "beta", remoteIp,
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);
ConfigChangePublisher.notifyConfigChange(
new ConfigDataChangeEvent(dataId, group, tenant, null, "beta", System.currentTimeMillis()));

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

return RestResultUtils.success("stop beta ok", true);
}
Expand Down Expand Up @@ -687,8 +686,8 @@ public RestResult<Map<String, Object>> importAndPublishConfig(HttpServletRequest
null, policy);
for (ConfigInfo configInfo : configInfoList) {
ConfigChangePublisher.notifyConfigChange(
new ConfigDataChangeEvent(false, configInfo.getDataId(), configInfo.getGroup(),
configInfo.getTenant(), time.getTime()));
new ConfigDataChangeEvent(configInfo.getDataId(), configInfo.getGroup(), configInfo.getTenant(),
time.getTime()));
ConfigTraceService.logPersistenceEvent(configInfo.getDataId(), configInfo.getGroup(),
configInfo.getTenant(), requestIpApp, time.getTime(), InetUtils.getSelfIP(),
ConfigTraceService.PERSISTENCE_EVENT, ConfigTraceService.PERSISTENCE_TYPE_PUB,
Expand Down Expand Up @@ -939,8 +938,8 @@ public RestResult<Map<String, Object>> cloneConfig(HttpServletRequest request,
srcIp, null, policy);
for (ConfigInfo configInfo : configInfoList4Clone) {
ConfigChangePublisher.notifyConfigChange(
new ConfigDataChangeEvent(false, configInfo.getDataId(), configInfo.getGroup(),
configInfo.getTenant(), time.getTime()));
new ConfigDataChangeEvent(configInfo.getDataId(), configInfo.getGroup(), configInfo.getTenant(),
time.getTime()));
ConfigTraceService.logPersistenceEvent(configInfo.getDataId(), configInfo.getGroup(),
configInfo.getTenant(), requestIpApp, time.getTime(), InetUtils.getSelfIP(),
ConfigTraceService.PERSISTENCE_EVENT, ConfigTraceService.PERSISTENCE_TYPE_PUB,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,63 +19,62 @@
import com.alibaba.nacos.config.server.utils.SimpleReadWriteLock;
import com.alibaba.nacos.core.utils.StringPool;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
* Cache item.
*
* @author Nacos
*/
public class CacheItem {

final String groupKey;

public String type;

ConfigCache configCache = new ConfigCache();

/**
* Use for tagv2.
* Use for gray.
*/
private volatile Map<String, ConfigCacheGray> configCacheGray = null;

List<ConfigCacheGray> sortedConfigCacheGrayList = null;

private final SimpleReadWriteLock rwLock = new SimpleReadWriteLock();

public CacheItem(String groupKey, String encryptedDataKey) {
this.groupKey = StringPool.get(groupKey);
this.getConfigCache().setEncryptedDataKey(encryptedDataKey);
}

public CacheItem(String groupKey) {
this.groupKey = StringPool.get(groupKey);
}

public ConfigCache getConfigCache() {
return configCache;
}

public SimpleReadWriteLock getRwLock() {
return rwLock;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public String getGroupKey() {
return groupKey;
}

/**
* init config gray if empty.
*/
Expand All @@ -84,7 +83,7 @@ public void initConfigGrayIfEmpty() {
this.configCacheGray = new HashMap<>(4);
}
}

/**
* init config gray if empty.
*
Expand All @@ -96,31 +95,37 @@ public void initConfigGrayIfEmpty(String grayName) {
this.configCacheGray.put(grayName, new ConfigCacheGray(grayName));
}
}

public List<ConfigCacheGray> getSortConfigGrays() {
return sortedConfigCacheGrayList;
}

/**
* sort config gray.
* sort config gray.
*/
public void sortConfigGray() {
if (configCacheGray == null || configCacheGray.isEmpty()) {
sortedConfigCacheGrayList = null;
return;
}
sortedConfigCacheGrayList = configCacheGray.entrySet().stream()
.sorted(Comparator.comparingInt(o -> o.getValue().getPriority()))
.collect(ArrayList::new, (list, item) -> list.add(item.getValue()), ArrayList::addAll);

sortedConfigCacheGrayList = configCacheGray.values().stream().sorted((o1, o2) -> {
if (o1.getPriority() != o2.getPriority()) {
return Integer.compare(o1.getPriority(), o2.getPriority()) * -1;
} else {
return o1.getGrayName().compareTo(o2.getGrayName());
}

}).collect(Collectors.toList());
}

public Map<String, ConfigCacheGray> getConfigCacheGray() {
return configCacheGray;
}

public void clearConfigGrays() {
this.configCacheGray = null;
this.sortedConfigCacheGrayList = null;
}

}
Loading

0 comments on commit b10c024

Please sign in to comment.