diff --git a/CHANGELOG.md b/CHANGELOG.md
index 577fec6e4..04e750fc9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,3 +5,4 @@
- [feat:support config empty protection.](https://github.com/Tencent/spring-cloud-tencent/pull/1585)
- [feat:upgrade springframework version.](https://github.com/Tencent/spring-cloud-tencent/pull/1590)
- [feat:support dynamic multi-discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1595)
+- [feat:support ipv6.](https://github.com/Tencent/spring-cloud-tencent/pull/1598)
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 c127e4cbe..6e43d6829 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
@@ -112,6 +112,11 @@ public class PolarisDiscoveryProperties {
@Value("${spring.cloud.polaris.discovery.zero-protection.is-need-test-connectivity:false}")
private boolean zeroProtectionNeedTestConnectivity = false;
+ /**
+ * if prefer ipv6.
+ */
+ private Boolean preferIpv6 = false;
+
public String getInstanceId() {
return instanceId;
}
@@ -219,6 +224,14 @@ public class PolarisDiscoveryProperties {
this.zeroProtectionNeedTestConnectivity = zeroProtectionNeedTestConnectivity;
}
+ public Boolean getPreferIpv6() {
+ return preferIpv6;
+ }
+
+ public void setPreferIpv6(Boolean preferIpv6) {
+ this.preferIpv6 = preferIpv6;
+ }
+
public Boolean getEnabled() {
return enabled;
}
@@ -256,6 +269,7 @@ public class PolarisDiscoveryProperties {
", serviceListRefreshInterval=" + serviceListRefreshInterval +
", zeroProtectionEnabled=" + zeroProtectionEnabled +
", zeroProtectionNeedTestConnectivity=" + zeroProtectionNeedTestConnectivity +
+ ", preferIpv6=" + preferIpv6 +
'}';
}
}
diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java
index e1c5ac361..13d94e0db 100644
--- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java
+++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java
@@ -59,6 +59,7 @@ public class PolarisDiscoveryHandler {
getHealthyInstancesRequest.setNamespace(namespace);
getHealthyInstancesRequest.setService(service);
getHealthyInstancesRequest.setIncludeCircuitBreakInstances(false);
+ getHealthyInstancesRequest.setPreferIpv6(polarisDiscoveryProperties.getPreferIpv6());
return polarisConsumer.getHealthyInstances(getHealthyInstancesRequest);
}
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 aa0a4ec1a..6f56c1a08 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
@@ -78,6 +78,12 @@
"defaultValue": false,
"description": "Zero protection test connectivity switch. Default: false."
},
+ {
+ "name": "spring.cloud.polaris.discovery.prefer-ipv6",
+ "type": "java.lang.Boolean",
+ "defaultValue": false,
+ "description": "if prefer ipv6. Default: false."
+ },
{
"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 e72e8c078..7640d3a63 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
@@ -102,6 +102,7 @@ public class PolarisDiscoveryPropertiesTest {
+ ", healthCheckUrl='/health'"
+ ", serviceListRefreshInterval=1000"
+ ", zeroProtectionEnabled=false"
- + ", zeroProtectionNeedTestConnectivity=false}");
+ + ", zeroProtectionNeedTestConnectivity=false"
+ + ", preferIpv6=false}");
}
}
diff --git a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/pom.xml b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/pom.xml
index f8b47e1af..c018dc90f 100644
--- a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/pom.xml
+++ b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/pom.xml
@@ -8,7 +8,7 @@
4.0.0
spring-cloud-starter-tencent-multi-discovery-plugin
- Spring Cloud Tencent Trace Plugin
+ Spring Cloud Tencent Multi Discovery Plugin
diff --git a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring.factories b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring.factories
deleted file mode 100644
index 74518ad07..000000000
--- a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring.factories
+++ /dev/null
@@ -1,2 +0,0 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
- com.tencent.cloud.plugin.discovery.multi.config.MultiDiscoveryAutoConfiguration
diff --git a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 000000000..a506afbba
--- /dev/null
+++ b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.tencent.cloud.plugin.discovery.multi.config.MultiDiscoveryAutoConfiguration
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 323aed563..9e12a121f 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
@@ -74,6 +74,11 @@ public final class TsfCoreEnvironmentPostProcessor implements EnvironmentPostPro
defaultProperties.put("spring.cloud.polaris.lossless.enabled", environment.getProperty("spring.cloud.polaris.lossless.enabled", "true"));
}
+ String tsfPreferIpv6 = environment.getProperty("tsf_prefer_ipv6");
+ if (StringUtils.isNotBlank(tsfPreferIpv6)) {
+ defaultProperties.put("spring.cloud.polaris.discovery.prefer-ipv6", tsfPreferIpv6);
+ }
+
if (TsfContextUtils.isTsfConsulEnabled(environment)) {
// tsf_consul_ip
String tsfConsulIp = environment.getProperty("tsf_consul_ip");