Skip to content

Commit 29d8e30

Browse files
committed
fix:fix tsf ipv6.
1 parent 885a81c commit 29d8e30

File tree

2 files changed

+39
-5
lines changed
  • polaris-common/polaris-model/src/main/java/com/tencent/polaris/api/pojo
  • polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/util

2 files changed

+39
-5
lines changed

polaris-common/polaris-model/src/main/java/com/tencent/polaris/api/pojo/InstanceWrap.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@
1919

2020
import com.tencent.polaris.api.utils.MapUtils;
2121
import com.tencent.polaris.api.utils.StringUtils;
22+
import com.tencent.polaris.logging.LoggerFactory;
2223
import com.tencent.polaris.metadata.core.constant.MetadataConstants;
24+
import com.tencent.polaris.metadata.core.constant.TsfMetadataConstants;
25+
import org.slf4j.Logger;
2326

2427
import java.util.Collection;
2528
import java.util.Map;
@@ -31,6 +34,8 @@
3134
*/
3235
public class InstanceWrap implements Instance {
3336

37+
private static final Logger LOG = LoggerFactory.getLogger(InstanceWrap.class);
38+
3439
private final Instance originalInstance;
3540

3641
private final String host;
@@ -40,11 +45,26 @@ public InstanceWrap(Instance originalInstance, boolean isPreferIpv6) {
4045
String host = "";
4146
if (isPreferIpv6 && MapUtils.isNotEmpty(originalInstance.getMetadata())) {
4247
host = originalInstance.getMetadata().get(MetadataConstants.ADDRESS_IPV6);
48+
if (StringUtils.isBlank(host)) {
49+
host = originalInstance.getMetadata().get(TsfMetadataConstants.TSF_ADDRESS_IPV6);
50+
}
51+
if (LOG.isDebugEnabled()) {
52+
LOG.debug("get ipv6 address {} from metadata: {}", host, originalInstance.getMetadata());
53+
}
4354
} else if (MapUtils.isNotEmpty(originalInstance.getMetadata())) {
4455
host = originalInstance.getMetadata().get(MetadataConstants.ADDRESS_IPV4);
56+
if (StringUtils.isBlank(host)) {
57+
host = originalInstance.getMetadata().get(TsfMetadataConstants.TSF_ADDRESS_IPV4);
58+
}
59+
if (LOG.isDebugEnabled()) {
60+
LOG.debug("get ipv4 address {} from metadata: {}", host, originalInstance.getMetadata());
61+
}
4562
}
4663
if (StringUtils.isBlank(host)) {
4764
host = originalInstance.getHost();
65+
if (LOG.isDebugEnabled()) {
66+
LOG.debug("get address {} from host", host);
67+
}
4868
}
4969
this.host = host;
5070
}

polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/util/DiscoveryUtils.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
import com.tencent.polaris.api.utils.IPAddressUtils;
2222
import com.tencent.polaris.api.utils.MapUtils;
2323
import com.tencent.polaris.api.utils.StringUtils;
24+
import com.tencent.polaris.logging.LoggerFactory;
2425
import com.tencent.polaris.metadata.core.constant.MetadataConstants;
26+
import com.tencent.polaris.metadata.core.constant.TsfMetadataConstants;
27+
import org.slf4j.Logger;
2528

2629
import java.util.ArrayList;
2730
import java.util.List;
@@ -34,6 +37,8 @@
3437
*/
3538
public class DiscoveryUtils {
3639

40+
private static final Logger LOG = LoggerFactory.getLogger(DiscoveryUtils.class);
41+
3742
public static ServiceInstances generateIpv6ServiceInstances(ServiceInstances serviceInstances) {
3843
ServiceKey serviceKey = serviceInstances.getServiceKey();
3944
Map<String, String> serviceMetadata = serviceInstances.getMetadata();
@@ -49,11 +54,20 @@ public static ServiceInstances generateIpv6ServiceInstances(ServiceInstances ser
4954
}
5055

5156
static boolean checkIpv6Instance(Instance instance) {
52-
if (MapUtils.isNotEmpty(instance.getMetadata())
53-
&& instance.getMetadata().containsKey(MetadataConstants.ADDRESS_IPV6)
54-
&& StringUtils.isNotBlank(instance.getMetadata().get(MetadataConstants.ADDRESS_IPV6))) {
55-
return true;
57+
if (LOG.isDebugEnabled()) {
58+
LOG.debug("check instance if ipv6: {}:{} with metadata {}", instance.getHost(), instance.getPort(), instance.getMetadata());
59+
} else if (LOG.isTraceEnabled()) {
60+
LOG.trace("check instance if ipv6: {}", instance.toString());
61+
}
62+
63+
Map<String, String> metadata = instance.getMetadata();
64+
if (MapUtils.isEmpty(metadata)) {
65+
return IPAddressUtils.checkIpv6Host(instance.getHost());
5666
}
57-
return IPAddressUtils.checkIpv6Host(instance.getHost());
67+
68+
String ipv6Address = metadata.get(MetadataConstants.ADDRESS_IPV6);
69+
String tsfIpv6Address = metadata.get(TsfMetadataConstants.TSF_ADDRESS_IPV6);
70+
return StringUtils.isNotBlank(ipv6Address) || StringUtils.isNotBlank(tsfIpv6Address)
71+
|| IPAddressUtils.checkIpv6Host(instance.getHost());
5872
}
5973
}

0 commit comments

Comments
 (0)