IGNITE-10552 Web Agent: Improve logging when cluster topology changed.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4884dec6 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4884dec6 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4884dec6 Branch: refs/heads/ignite-10189 Commit: 4884dec6c8c2e3698d289e4be6c177477d091adc Parents: 025a036 Author: Alexey Kuznetsov <[email protected]> Authored: Fri Dec 7 14:07:28 2018 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Fri Dec 7 14:07:28 2018 +0700 ---------------------------------------------------------------------- .../console/agent/handlers/ClusterListener.java | 10 ++++++++ .../ignite/console/agent/rest/RestExecutor.java | 24 ++++++++++++-------- 2 files changed, 25 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4884dec6/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java ---------------------------------------------------------------------- diff --git a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java index 6985837..14d3d5d 100644 --- a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java +++ b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java @@ -368,6 +368,14 @@ public class ClusterListener implements AutoCloseable { boolean differentCluster(TopologySnapshot prev) { return prev == null || F.isEmpty(prev.nids) || Collections.disjoint(nids, prev.nids); } + + /** + * @param prev Previous topology. + * @return {@code true} in case if current topology is the same cluster, but topology changed. + */ + boolean topologyChanged(TopologySnapshot prev) { + return prev != null && !prev.nids.equals(nids); + } } /** */ @@ -495,6 +503,8 @@ public class ClusterListener implements AutoCloseable { if (newTop.differentCluster(top)) log.info("Connection successfully established to cluster with nodes: " + newTop.nid8()); + else if (newTop.topologyChanged(top)) + log.info("Cluster topology changed, new topology: " + newTop.nid8()); boolean active = active(newTop.clusterVersion(), F.first(newTop.getNids())); http://git-wip-us.apache.org/repos/asf/ignite/blob/4884dec6/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java ---------------------------------------------------------------------- diff --git a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java index 737b966..d3bdcdd 100644 --- a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java +++ b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java @@ -141,10 +141,11 @@ public class RestExecutor implements AutoCloseable { /** */ private RestResult sendRequest(String url, Map<String, Object> params, Map<String, Object> headers) throws IOException { - HttpUrl httpUrl = HttpUrl.parse(url); - - HttpUrl.Builder urlBuilder = httpUrl.newBuilder() - .addPathSegment("ignite"); + HttpUrl httpUrl = HttpUrl + .parse(url) + .newBuilder() + .addPathSegment("ignite") + .build(); final Request.Builder reqBuilder = new Request.Builder(); @@ -163,8 +164,7 @@ public class RestExecutor implements AutoCloseable { } } - reqBuilder.url(urlBuilder.build()) - .post(bodyParams.build()); + reqBuilder.url(httpUrl).post(bodyParams.build()); try (Response resp = httpClient.newCall(reqBuilder.build()).execute()) { return parseResponse(resp); @@ -175,14 +175,20 @@ public class RestExecutor implements AutoCloseable { public RestResult sendRequest(List<String> nodeURIs, Map<String, Object> params, Map<String, Object> headers) throws IOException { Integer startIdx = startIdxs.getOrDefault(nodeURIs, 0); - for (int i = 0; i < nodeURIs.size(); i++) { - Integer currIdx = (startIdx + i) % nodeURIs.size(); + int urlsCnt = nodeURIs.size(); + + for (int i = 0; i < urlsCnt; i++) { + Integer currIdx = (startIdx + i) % urlsCnt; String nodeUrl = nodeURIs.get(currIdx); try { RestResult res = sendRequest(nodeUrl, params, headers); + // If first attempt failed then throttling should be cleared. + if (i > 0) + LT.clear(); + LT.info(log, "Connected to cluster [url=" + nodeUrl + "]"); startIdxs.put(nodeURIs, currIdx); @@ -190,7 +196,7 @@ public class RestExecutor implements AutoCloseable { return res; } catch (ConnectException ignored) { - // No-op. + LT.warn(log, "Failed to connect to cluster [url=" + nodeUrl + "]"); } }
