From a24f4fdce2ebcfad46eb2bb312adc5983c8c121a Mon Sep 17 00:00:00 2001 From: ascrutae Date: Fri, 7 Jul 2017 19:45:32 +0800 Subject: [PATCH] fix issue that server list never updated --- .../remote/DiscoveryRestServiceClient.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/DiscoveryRestServiceClient.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/DiscoveryRestServiceClient.java index 42c89afe1..3d7f0fa70 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/DiscoveryRestServiceClient.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/DiscoveryRestServiceClient.java @@ -5,6 +5,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import java.io.IOException; import java.util.LinkedList; +import java.util.List; import java.util.Random; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; @@ -66,11 +67,14 @@ public class DiscoveryRestServiceClient implements Runnable { for (JsonElement element : serverList) { newServerList.add(element.getAsString()); } - if (!newServerList.equals(GRPC_SERVERS)) { + + if (!isListEquals(newServerList, GRPC_SERVERS)) { + GRPC_SERVERS = newServerList; logger.debug("Refresh GRPC server list: {}", GRPC_SERVERS); } else { logger.debug("GRPC server list remain unchanged: {}", GRPC_SERVERS); } + } } } @@ -82,6 +86,20 @@ public class DiscoveryRestServiceClient implements Runnable { } } + private boolean isListEquals(List list1, List list2) { + if (list1.size() != list2.size()) { + return false; + } + + for (String ip1 : list1) { + if (!list2.contains(ip1)) { + return false; + } + } + + return true; + } + /** * Prepare the given message for HTTP Post service. *