From bb4a38fc3d0b8944378e7ac1b842ad3e1cad61d6 Mon Sep 17 00:00:00 2001 From: Metin Dumandag Date: Thu, 6 May 2021 14:09:46 +0300 Subject: [PATCH] Pretty print cluster connect timeout in logs (#18648) The default value for the cluster connect timeout is infinite, so it is represented with `Long.MAX_VALUE`. When we try to log this as it is, we output something like below. ``` ... cluster connect timeout: 9223372036854775807 ms, ... ``` To make this more clear, we will replace this with the output below. ``` ... cluster connect timeout: INFINITE, ... ``` If the user has provided some other timeout value (such as 999 ms), the output will still be as it is now. ``` ... cluster connect timeout: 999 ms, ... ``` --- .../impl/connection/tcp/WaitStrategy.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/hazelcast/src/main/java/com/hazelcast/client/impl/connection/tcp/WaitStrategy.java b/hazelcast/src/main/java/com/hazelcast/client/impl/connection/tcp/WaitStrategy.java index 7bc9ebee4bf2..b48c669a9234 100644 --- a/hazelcast/src/main/java/com/hazelcast/client/impl/connection/tcp/WaitStrategy.java +++ b/hazelcast/src/main/java/com/hazelcast/client/impl/connection/tcp/WaitStrategy.java @@ -32,6 +32,7 @@ public class WaitStrategy { private int attempt; private int currentBackoffMillis; private final long clusterConnectTimeoutMillis; + private final String clusterConnectTimeoutText; private long clusterConnectAttemptBegin; WaitStrategy(int initialBackoffMillis, int maxBackoffMillis, @@ -40,6 +41,13 @@ public class WaitStrategy { this.maxBackoffMillis = maxBackoffMillis; this.multiplier = multiplier; this.clusterConnectTimeoutMillis = clusterConnectTimeoutMillis; + if (clusterConnectTimeoutMillis == Long.MAX_VALUE) { + // For a better logging output for the default values, we will + // replace "Long.MAX_VALUE ms" with this in our output. + clusterConnectTimeoutText = "INFINITE"; + } else { + clusterConnectTimeoutText = clusterConnectTimeoutMillis + " ms"; + } this.jitter = jitter; this.logger = logger; } @@ -54,9 +62,10 @@ public boolean sleep() { attempt++; long currentTimeMillis = Clock.currentTimeMillis(); long timePassed = currentTimeMillis - clusterConnectAttemptBegin; + if (timePassed > clusterConnectTimeoutMillis) { - logger.warning(String.format("Unable to get live cluster connection, cluster connect timeout (%d ms) is " - + "reached. Attempt %d.", clusterConnectTimeoutMillis, attempt)); + logger.warning(String.format("Unable to get live cluster connection, cluster connect timeout (%s) is " + + "reached. Attempt %d.", clusterConnectTimeoutText, attempt)); return false; } @@ -68,8 +77,8 @@ public boolean sleep() { actualSleepTime = Math.min(actualSleepTime, clusterConnectTimeoutMillis - timePassed); logger.warning(String.format("Unable to get live cluster connection, retry in %d ms, attempt: %d" - + ", cluster connect timeout: %d ms" - + ", max backoff: %d ms", actualSleepTime, attempt, clusterConnectTimeoutMillis, maxBackoffMillis)); + + ", cluster connect timeout: %s" + + ", max backoff: %d ms", actualSleepTime, attempt, clusterConnectTimeoutText, maxBackoffMillis)); try { Thread.sleep(actualSleepTime);