From 0ff2e444f81874609ac56d29e6b1642425aa9db5 Mon Sep 17 00:00:00 2001 From: Haotian Zhang <928016560@qq.com> Date: Wed, 11 Jun 2025 17:57:42 +0800 Subject: [PATCH] feat:support instance detect. (#1616) --- CHANGELOG.md | 1 + .../polaris/config/ConfigurationModifier.java | 2 + .../polaris/DiscoveryConfigModifier.java | 2 + .../polaris/PolarisDiscoveryProperties.java | 37 +++++++++++++++++++ .../PolarisDiscoveryPropertiesTest.java | 9 ++++- 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2a403006..46cdeb253 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,3 +7,4 @@ - [feat:support ipv6.](https://github.com/Tencent/spring-cloud-tencent/pull/1592) - [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1593) - [feat:support stat reporting path aggregation.](https://github.com/Tencent/spring-cloud-tencent/pull/1602) +- [feat:support instance detect.](https://github.com/Tencent/spring-cloud-tencent/pull/1616) 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 dd7ad73c9..2d3f43302 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 @@ -27,6 +27,7 @@ import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; import com.tencent.cloud.polaris.config.config.PolarisCryptoConfigProperties; import com.tencent.cloud.polaris.context.PolarisConfigurationConfigModifier; 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.factory.config.ConfigurationImpl; @@ -64,6 +65,7 @@ public class ConfigurationModifier implements PolarisConfigurationConfigModifier public void modify(ConfigurationImpl configuration) { configuration.getGlobal().getAPI().setReportEnable(false); configuration.getGlobal().getStatReporter().setEnable(false); + configuration.getConsumer().getOutlierDetection().setWhen(OutlierDetectionConfig.When.never); if (!polarisContextProperties.getEnabled() || !polarisConfigProperties.isEnabled()) { return; 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 f9b430d6c..a24653e58 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 @@ -55,6 +55,8 @@ public class DiscoveryConfigModifier implements PolarisConfigModifier { configuration.getConsumer().getZeroProtection().setEnable(polarisDiscoveryProperties.isZeroProtectionEnabled()); configuration.getConsumer().getZeroProtection() .setNeedTestConnectivity(polarisDiscoveryProperties.isZeroProtectionNeedTestConnectivity()); + + configuration.getConsumer().getOutlierDetection().setWhen(polarisDiscoveryProperties.getDetect().getWhen()); } @Override 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 f0f0ce597..c8487ea26 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 @@ -18,6 +18,7 @@ package com.tencent.cloud.polaris; import com.tencent.cloud.common.constant.ContextConstant; +import com.tencent.polaris.api.config.consumer.OutlierDetectionConfig; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -122,6 +123,11 @@ public class PolarisDiscoveryProperties { */ private Boolean allRecoverEnabled = true; + /** + * Instance detect. + */ + private Detect detect = new Detect(); + public String getInstanceId() { return instanceId; } @@ -265,6 +271,14 @@ public class PolarisDiscoveryProperties { this.registerEnabled = registerEnabled; } + public Detect getDetect() { + return detect; + } + + public void setDetect(Detect detect) { + this.detect = detect; + } + @Override public String toString() { return "PolarisDiscoveryProperties{" + @@ -284,6 +298,29 @@ public class PolarisDiscoveryProperties { ", zeroProtectionNeedTestConnectivity=" + zeroProtectionNeedTestConnectivity + ", preferIpv6=" + preferIpv6 + ", allRecoverEnabled=" + allRecoverEnabled + + ", detect=" + detect + '}'; } + + public static class Detect { + /** + * Enable instance detect or not. + */ + private OutlierDetectionConfig.When when = OutlierDetectionConfig.When.never; + + public OutlierDetectionConfig.When getWhen() { + return when; + } + + public void setWhen(OutlierDetectionConfig.When when) { + this.when = when; + } + + @Override + public String toString() { + return "Detect{" + + "when=" + when + + '}'; + } + } } 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 7daee945f..7ddfbddb0 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 @@ -18,6 +18,7 @@ package com.tencent.cloud.polaris; +import com.tencent.polaris.api.config.consumer.OutlierDetectionConfig; import org.junit.jupiter.api.Test; import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST; @@ -94,6 +95,11 @@ public class PolarisDiscoveryPropertiesTest { polarisDiscoveryProperties.setAllRecoverEnabled(false); assertThat(polarisDiscoveryProperties.getAllRecoverEnabled()).isFalse(); + PolarisDiscoveryProperties.Detect detect = new PolarisDiscoveryProperties.Detect(); + detect.setWhen(OutlierDetectionConfig.When.after_call); + polarisDiscoveryProperties.setDetect(detect); + assertThat(polarisDiscoveryProperties.getDetect().getWhen()).isEqualTo(OutlierDetectionConfig.When.after_call); + assertThat(polarisDiscoveryProperties.toString()) .isEqualTo("PolarisDiscoveryProperties{" + "namespace='Test'" @@ -110,6 +116,7 @@ public class PolarisDiscoveryPropertiesTest { + ", zeroProtectionEnabled=false" + ", zeroProtectionNeedTestConnectivity=false" + ", preferIpv6=true" - + ", allRecoverEnabled=false}"); + + ", allRecoverEnabled=false" + + ", detect=Detect{when=after_call}}"); } }