From a3ed64c011ed3586a08da2a53792aba3bb4409f0 Mon Sep 17 00:00:00 2001 From: fishtailfu Date: Mon, 3 Aug 2026 16:16:13 +0800 Subject: [PATCH] fix: enable config watch client reporter plugin in SCT --- .../polaris/config/ConfigurationModifier.java | 11 +++++++++-- .../polaris/config/ConfigurationModifierTest.java | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java index 6014e06a2..1e7515fca 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java @@ -32,9 +32,12 @@ import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.api.config.consumer.OutlierDetectionConfig; import com.tencent.polaris.api.utils.CollectionUtils; import com.tencent.polaris.api.utils.StringUtils; +import com.tencent.polaris.configuration.client.internal.ConfigWatchClientReporter; +import com.tencent.polaris.configuration.client.internal.ConfigWatchReporterConfig; import com.tencent.polaris.factory.config.ConfigurationImpl; import com.tencent.polaris.factory.config.configuration.ConfigFilterConfigImpl; import com.tencent.polaris.factory.config.configuration.ConnectorConfigImpl; +import com.tencent.polaris.factory.config.global.ClientReporterConfigImpl; import com.tencent.polaris.factory.config.global.ServerConnectorConfigImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,8 +70,12 @@ public class ConfigurationModifier implements PolarisConfigurationConfigModifier @Override public void modify(ConfigurationImpl configuration) { configuration.getGlobal().getStatReporter().setEnable(false); - // Enable client reporter to report config watch metadata via ReportClient. - configuration.getGlobal().getClientReporter().setEnable(true); + ClientReporterConfigImpl clientReporterConfig = configuration.getGlobal().getClientReporter(); + clientReporterConfig.setEnable(true); + ConfigWatchReporterConfig configWatchReporterConfig = clientReporterConfig.getPluginConfig( + ConfigWatchClientReporter.NAME, ConfigWatchReporterConfig.class); + configWatchReporterConfig.setEnable(true); + clientReporterConfig.setPluginConfig(ConfigWatchClientReporter.NAME, configWatchReporterConfig); configuration.getConsumer().getOutlierDetection().setWhen(OutlierDetectionConfig.When.never); configuration.getConsumer().getCircuitBreaker().setEnable(false); diff --git a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/ConfigurationModifierTest.java b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/ConfigurationModifierTest.java index 006d08de3..8cfb8dfa6 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/ConfigurationModifierTest.java +++ b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/ConfigurationModifierTest.java @@ -32,6 +32,8 @@ import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; import com.tencent.cloud.polaris.config.config.PolarisCryptoConfigProperties; import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.api.config.consumer.OutlierDetectionConfig; +import com.tencent.polaris.configuration.client.internal.ConfigWatchClientReporter; +import com.tencent.polaris.configuration.client.internal.ConfigWatchReporterConfig; import com.tencent.polaris.factory.config.ConfigurationImpl; import com.tencent.polaris.factory.config.configuration.ConfigFileConfigImpl; import com.tencent.polaris.factory.config.configuration.ConfigFilterConfigImpl; @@ -79,6 +81,9 @@ class ConfigurationModifierTest { @Mock private PolarisContextProperties polarisContextProperties; + @Mock + private ConfigWatchReporterConfig configWatchReporter; + private ConfigurationModifier configurationModifier; @BeforeEach @@ -100,6 +105,8 @@ class ConfigurationModifierTest { APIConfigImpl apiConfig = mock(APIConfigImpl.class); when(globalConfig.getStatReporter()).thenReturn(statReporter); when(globalConfig.getClientReporter()).thenReturn(clientReporter); + when(clientReporter.getPluginConfig(ConfigWatchClientReporter.NAME, ConfigWatchReporterConfig.class)) + .thenReturn(configWatchReporter); Mockito.lenient().when(globalConfig.getServerConnector()).thenReturn(serverConnector); Mockito.lenient().when(globalConfig.getAPI()).thenReturn(apiConfig); when(configuration.getGlobal()).thenReturn(globalConfig); @@ -157,6 +164,10 @@ class ConfigurationModifierTest { // Assert verify(configuration.getGlobal().getStatReporter()).setEnable(false); verify(configuration.getGlobal().getClientReporter()).setEnable(true); + verify(configuration.getGlobal().getClientReporter() + .getPluginConfig(ConfigWatchClientReporter.NAME, ConfigWatchReporterConfig.class)).setEnable(true); + verify(configuration.getGlobal().getClientReporter()) + .setPluginConfig(ConfigWatchClientReporter.NAME, configWatchReporter); verify(configuration.getConsumer().getOutlierDetection()).setWhen(OutlierDetectionConfig.When.never); verify(configuration.getConsumer().getCircuitBreaker()).setEnable(false); verify(configuration.getConfigFile(), never()).getServerConnector(); @@ -181,6 +192,10 @@ class ConfigurationModifierTest { // Assert verify(configuration.getGlobal().getStatReporter()).setEnable(false); verify(configuration.getGlobal().getClientReporter()).setEnable(true); + verify(configuration.getGlobal().getClientReporter() + .getPluginConfig(ConfigWatchClientReporter.NAME, ConfigWatchReporterConfig.class)).setEnable(true); + verify(configuration.getGlobal().getClientReporter()) + .setPluginConfig(ConfigWatchClientReporter.NAME, configWatchReporter); verify(configuration.getConfigFile(), never()).getServerConnector(); }