diff --git a/CHANGELOG.md b/CHANGELOG.md index 278bd8c87..ec41a3e43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,3 +10,4 @@ - [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1606) - [feat:support stat reporting path aggregation.](https://github.com/Tencent/spring-cloud-tencent/pull/1610) - [feat:support namespace exports configuration if not created.](https://github.com/Tencent/spring-cloud-tencent/pull/1615) +- [feat:support instance detect.](https://github.com/Tencent/spring-cloud-tencent/pull/1620) 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.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 ConfigurationModifier(PolarisConfigProperties polarisConfigProperties, 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 void modify(ConfigurationImpl configuration) { 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 fead815b3..bfca96bd4 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; @@ -127,6 +128,11 @@ public class PolarisDiscoveryProperties { */ private String namespaceExports; + /** + * Instance detect. + */ + private Detect detect = new Detect(); + public String getInstanceId() { return instanceId; } @@ -278,6 +284,14 @@ public void setNamespaceExports(String namespaceExports) { this.namespaceExports = namespaceExports; } + public Detect getDetect() { + return detect; + } + + public void setDetect(Detect detect) { + this.detect = detect; + } + @Override public String toString() { return "PolarisDiscoveryProperties{" + @@ -298,6 +312,29 @@ public String toString() { ", preferIpv6=" + preferIpv6 + ", allRecoverEnabled=" + allRecoverEnabled + ", namespaceExports='" + namespaceExports + '\'' + + ", 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 5aaae1d00..cedfc6f86 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; @@ -97,6 +98,11 @@ public void testGetAndSet() { polarisDiscoveryProperties.setNamespaceExports("*"); assertThat(polarisDiscoveryProperties.getNamespaceExports()).isEqualTo("*"); + 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'" @@ -114,6 +120,7 @@ public void testGetAndSet() { + ", zeroProtectionNeedTestConnectivity=false" + ", preferIpv6=true" + ", allRecoverEnabled=false" - + ", namespaceExports='*'}"); + + ", namespaceExports='*'" + + ", detect=Detect{when=after_call}}"); } }