From 48ef0d986297cbbcef0c1626ab5a21b55c99ea26 Mon Sep 17 00:00:00 2001 From: andrewshan Date: Tue, 23 Aug 2022 13:47:44 +0800 Subject: [PATCH] =?UTF-8?q?consul=EF=BC=8C=E5=AF=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/consul/ConsulRegistryCenter.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/polaris-sync-registry-plugins/registry-consul/src/main/java/cn/polarismesh/polaris/sync/registry/plugins/consul/ConsulRegistryCenter.java b/polaris-sync-registry-plugins/registry-consul/src/main/java/cn/polarismesh/polaris/sync/registry/plugins/consul/ConsulRegistryCenter.java index 64fd7e3..fabd9c5 100644 --- a/polaris-sync-registry-plugins/registry-consul/src/main/java/cn/polarismesh/polaris/sync/registry/plugins/consul/ConsulRegistryCenter.java +++ b/polaris-sync-registry-plugins/registry-consul/src/main/java/cn/polarismesh/polaris/sync/registry/plugins/consul/ConsulRegistryCenter.java @@ -48,8 +48,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -199,20 +201,24 @@ private List convertConsulInstance(Service service, List filters = (null == group ? null : group.getMetadataMap()); + Set processedNodes = new HashSet<>(); for (HealthService healthService : instances) { - LOG.info("[Consul]convert instance {}", healthService); HealthService.Service instance = healthService.getService(); + HostAndPort hostAndPort = HostAndPort.build(instance.getAddress(), instance.getPort()); + if (processedNodes.contains(hostAndPort)) { + continue; + } + processedNodes.add(hostAndPort); Map metadata = instance.getMeta(); boolean matched = CommonUtils.matchMetadata(metadata, filters); - LOG.info("[Consul]convert instance {}, matched {}", healthService, matched); if (!matched) { continue; } Instance.Builder builder = Instance.newBuilder(); builder.setNamespace(ResponseUtils.toStringValue(service.getNamespace())); builder.setService(ResponseUtils.toStringValue(service.getService())); - builder.setHost(ResponseUtils.toStringValue(instance.getAddress())); - builder.setPort(ResponseUtils.toUInt32Value(instance.getPort())); + builder.setHost(ResponseUtils.toStringValue(hostAndPort.getHost())); + builder.setPort(ResponseUtils.toUInt32Value(hostAndPort.getPort())); if (!CollectionUtils.isEmpty(instance.getMeta())) { builder.putAllMetadata(instance.getMeta()); }