Skip to content

Commit

Permalink
[ISSUE #13057] 修复配置管理发布Beta然后停止Beta,client端就监听不到后续的配置变化问题
Browse files Browse the repository at this point in the history
  • Loading branch information
misakacoder committed Jan 21, 2025
1 parent 6ccdd58 commit 081d881
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,8 @@ public Result<Boolean> stopBeta(HttpServletRequest httpServletRequest, ConfigFor
String dataId = configForm.getDataId();
String groupName = configForm.getGroupName();
String namespaceId = NamespaceUtil.processNamespaceParameter(configForm.getNamespaceId());
boolean success = configProxy.removeBetaConfig(dataId, groupName, namespaceId, remoteIp, requestIpApp);
String srcUser = RequestUtil.getSrcUserName(httpServletRequest);
boolean success = configProxy.removeBetaConfig(dataId, groupName, namespaceId, remoteIp, requestIpApp, srcUser);
if (!success) {
return Result.failure(HttpStatus.INTERNAL_SERVER_ERROR.value(),
HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase(), false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,8 @@ Result<Map<String, Object>> cloneConfig(String srcUser, String namespaceId,
* @param requestIpApp the name of the application making the request
* @return true if the beta configuration is successfully removed
*/
boolean removeBetaConfig(String dataId, String group, String namespaceId, String remoteIp, String requestIpApp);
boolean removeBetaConfig(String dataId, String group, String namespaceId, String remoteIp, String requestIpApp,
String srcUser);

/**
* Query beta configuration based on dataId, group, and namespaceId.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,12 @@
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.GroupKey2;
import com.alibaba.nacos.config.server.utils.PropertyUtil;
import com.alibaba.nacos.config.server.utils.TimeUtils;
import com.alibaba.nacos.config.server.utils.YamlParserUtil;
import com.alibaba.nacos.config.server.utils.ZipUtils;
Expand Down Expand Up @@ -106,17 +108,21 @@ public class ConfigInnerHandler implements ConfigHandler {

private ConfigInfoBetaPersistService configInfoBetaPersistService;

private ConfigInfoGrayPersistService configInfoGrayPersistService;

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

@Override
Expand Down Expand Up @@ -592,15 +598,19 @@ public Result<Map<String, Object>> cloneConfig(String srcUser, String namespaceI

@Override
public boolean removeBetaConfig(String dataId, String group, String namespaceId, String remoteIp,
String requestIpApp) {
String requestIpApp, String srcUser) {
try {
configInfoBetaPersistService.removeConfigInfo4Beta(dataId, group, namespaceId);
configInfoGrayPersistService.removeConfigInfoGray(dataId, group, namespaceId, BetaGrayRule.TYPE_BETA,
remoteIp, srcUser);
} catch (Throwable e) {
LOGGER.error("remove beta data error", e);
return false;
}
ConfigTraceService.logPersistenceEvent(dataId, group, namespaceId, requestIpApp, System.currentTimeMillis(),
remoteIp, ConfigTraceService.PERSISTENCE_EVENT_BETA, ConfigTraceService.PERSISTENCE_TYPE_REMOVE, null);
if (PropertyUtil.isGrayCompatibleModel()) {
configInfoBetaPersistService.removeConfigInfo4Beta(dataId, group, namespaceId);
}
ConfigChangePublisher.notifyConfigChange(
new ConfigDataChangeEvent(dataId, group, namespaceId, BetaGrayRule.TYPE_BETA,
System.currentTimeMillis()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,8 @@ public Result<Map<String, Object>> cloneConfig(String srcUser, String namespaceI
* Remove beta configuration based on dataId, group, and namespaceId.
*/
public boolean removeBetaConfig(String dataId, String group, String namespaceId, String remoteIp,
String requestIpApp) throws NacosException {
return configHandler.removeBetaConfig(dataId, group, namespaceId, remoteIp, requestIpApp);
String requestIpApp, String srcUser) throws NacosException {
return configHandler.removeBetaConfig(dataId, group, namespaceId, remoteIp, requestIpApp, srcUser);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -435,8 +435,8 @@ void testStopBeta() throws Exception {
String dataId = "testDataId";
String group = "testGroup";
String namespaceId = "testNamespaceId";
when(configProxy.removeBetaConfig(anyString(), anyString(), anyString(), anyString(), anyString())).thenReturn(
true);
when(configProxy.removeBetaConfig(anyString(), anyString(), anyString(), anyString(), anyString(),
anyString())).thenReturn(true);

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.delete("/v3/console/cs/config/beta")
.param("dataId", dataId).param("groupName", group).param("namespaceId", namespaceId);
Expand Down

0 comments on commit 081d881

Please sign in to comment.