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 + 
"]");
             }
         }
 

Reply via email to