diff --git a/CHANGELOG.md b/CHANGELOG.md index 163e8829e..739a8af4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,3 +40,4 @@ - [feat:support config empty protection.](https://github.com/Tencent/spring-cloud-tencent/pull/1583) - [feat:support dynamic multi-discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1594) - [feat:support ipv6.](https://github.com/Tencent/spring-cloud-tencent/pull/1600) +- [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1603) 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 31a00cb22..4a82cfeb0 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 @@ -170,6 +170,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")); } }