From 3a728df6c84586f89f3e398e396ee03e6c028a7b Mon Sep 17 00:00:00 2001 From: Fishtail <49390359+fuyuwei01@users.noreply.github.com> Date: Wed, 4 Jun 2025 15:02:52 +0800 Subject: [PATCH] feat:support config all recover enabled. (#1605) Co-authored-by: Haotian Zhang --- CHANGELOG.md | 1 + .../cloud/polaris/DiscoveryConfigModifier.java | 1 + .../cloud/polaris/PolarisDiscoveryProperties.java | 14 ++++++++++++++ .../additional-spring-configuration-metadata.json | 6 ++++++ .../polaris/PolarisDiscoveryPropertiesTest.java | 9 ++++++++- .../tsf/TsfCoreEnvironmentPostProcessor.java | 2 ++ 6 files changed, 32 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1eee41734..cc2c6bfbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,4 @@ - [feat:upgrade to 2023.0.5.](https://github.com/Tencent/spring-cloud-tencent/pull/1588) - [feat:support dynamic multi-discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1596) - [feat:support ipv6.](https://github.com/Tencent/spring-cloud-tencent/pull/1601) +- [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1605) diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/DiscoveryConfigModifier.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/DiscoveryConfigModifier.java index f878a63b9..f9b430d6c 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/DiscoveryConfigModifier.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/DiscoveryConfigModifier.java @@ -42,6 +42,7 @@ public class DiscoveryConfigModifier implements PolarisConfigModifier { RecoverRouterConfig recoverRouterConfig = configuration.getConsumer().getServiceRouter() .getPluginConfig(ServiceRouterConfig.DEFAULT_ROUTER_RECOVER, RecoverRouterConfig.class); recoverRouterConfig.setExcludeCircuitBreakInstances(false); + recoverRouterConfig.setAllRecoverEnable(polarisDiscoveryProperties.getAllRecoverEnabled()); // Update modified config to source properties configuration.getConsumer().getServiceRouter() diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisDiscoveryProperties.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisDiscoveryProperties.java index 6e43d6829..f0f0ce597 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisDiscoveryProperties.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisDiscoveryProperties.java @@ -117,6 +117,11 @@ public class PolarisDiscoveryProperties { */ private Boolean preferIpv6 = false; + /** + * is all recover enable. + */ + private Boolean allRecoverEnabled = true; + public String getInstanceId() { return instanceId; } @@ -232,6 +237,14 @@ public class PolarisDiscoveryProperties { this.preferIpv6 = preferIpv6; } + public Boolean getAllRecoverEnabled() { + return allRecoverEnabled; + } + + public void setAllRecoverEnabled(Boolean allRecoverEnabled) { + this.allRecoverEnabled = allRecoverEnabled; + } + public Boolean getEnabled() { return enabled; } @@ -270,6 +283,7 @@ public class PolarisDiscoveryProperties { ", zeroProtectionEnabled=" + zeroProtectionEnabled + ", zeroProtectionNeedTestConnectivity=" + zeroProtectionNeedTestConnectivity + ", preferIpv6=" + preferIpv6 + + ", allRecoverEnabled=" + allRecoverEnabled + '}'; } } diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 6f56c1a08..aa4fe5f87 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -84,6 +84,12 @@ "defaultValue": false, "description": "if prefer ipv6. Default: false." }, + { + "name": "spring.cloud.polaris.discovery.all-recover-enabled", + "type": "java.lang.Boolean", + "defaultValue": true, + "description": "is all recover enable. Default: true." + }, { "name": "spring.cloud.polaris.discovery.eager-load.enabled", "type": "java.lang.Boolean", diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisDiscoveryPropertiesTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisDiscoveryPropertiesTest.java index 7640d3a63..7daee945f 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisDiscoveryPropertiesTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisDiscoveryPropertiesTest.java @@ -88,6 +88,12 @@ public class PolarisDiscoveryPropertiesTest { polarisDiscoveryProperties.setInstanceId("test-ins-id"); assertThat(polarisDiscoveryProperties.getInstanceId()).isEqualTo("test-ins-id"); + polarisDiscoveryProperties.setPreferIpv6(true); + assertThat(polarisDiscoveryProperties.getPreferIpv6()).isTrue(); + + polarisDiscoveryProperties.setAllRecoverEnabled(false); + assertThat(polarisDiscoveryProperties.getAllRecoverEnabled()).isFalse(); + assertThat(polarisDiscoveryProperties.toString()) .isEqualTo("PolarisDiscoveryProperties{" + "namespace='Test'" @@ -103,6 +109,7 @@ public class PolarisDiscoveryPropertiesTest { + ", serviceListRefreshInterval=1000" + ", zeroProtectionEnabled=false" + ", zeroProtectionNeedTestConnectivity=false" - + ", preferIpv6=false}"); + + ", preferIpv6=true" + + ", allRecoverEnabled=false}"); } } diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreEnvironmentPostProcessor.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreEnvironmentPostProcessor.java index 9e12a121f..1354092d5 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreEnvironmentPostProcessor.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreEnvironmentPostProcessor.java @@ -173,6 +173,8 @@ public final class TsfCoreEnvironmentPostProcessor implements EnvironmentPostPro environment.getProperty("spring.cloud.polaris.router.rule-router.fail-over", "none")); defaultProperties.put("spring.cloud.polaris.router.namespace-router.enabled", environment.getProperty("spring.cloud.polaris.router.namespace-router.enabled", "true")); + defaultProperties.put("spring.cloud.polaris.discovery.all-recover-enabled", + environment.getProperty("spring.cloud.polaris.discovery.all-recover-enabled", "false")); } }