Skip to content

Commit a9a9bae

Browse files
authored
[router] Use nanos for cluster health check (#25043)
Duration.nanosSince expects a nano time, but a millis time was used
1 parent 4146f56 commit a9a9bae

1 file changed

Lines changed: 3 additions & 4 deletions

File tree

presto-router/src/main/java/com/facebook/presto/router/cluster/RemoteState.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import javax.inject.Inject;
2929

3030
import java.net.URI;
31-
import java.time.Instant;
3231
import java.util.concurrent.Future;
3332
import java.util.concurrent.atomic.AtomicBoolean;
3433
import java.util.concurrent.atomic.AtomicLong;
@@ -57,7 +56,7 @@ public abstract class RemoteState
5756
private final Duration clusterUnhealthyTimeout;
5857

5958
private AtomicBoolean isHealthy;
60-
private volatile Instant lastHealthyResponseTime = Instant.now();
59+
private volatile long lastHealthyResponseTimeNanos = System.nanoTime();
6160

6261
@Inject
6362
public RemoteState(HttpClient httpClient, URI remoteUri, RemoteStateConfig remoteStateConfig)
@@ -83,7 +82,7 @@ public synchronized void asyncRefresh()
8382
lastWarningLogged.set(System.nanoTime());
8483
}
8584

86-
if (nanosSince(lastHealthyResponseTime.toEpochMilli()).toMillis() > clusterUnhealthyTimeout.toMillis() && isHealthy.get()) {
85+
if (nanosSince(lastHealthyResponseTimeNanos).compareTo(clusterUnhealthyTimeout) > 0 && isHealthy.get()) {
8786
isHealthy.set(false);
8887
log.warn("%s:%d marked as unhealthy", remoteUri.getHost(), remoteUri.getPort());
8988
}
@@ -115,7 +114,7 @@ public void onSuccess(@Nullable FullJsonResponseHandler.JsonResponse<JsonNode> r
115114
log.debug("%s:%d was unhealthy, and is now healthy", remoteUri.getHost(), remoteUri.getPort());
116115
isHealthy.set(true);
117116
}
118-
lastHealthyResponseTime = Instant.now();
117+
lastHealthyResponseTimeNanos = System.nanoTime();
119118
}
120119
}
121120
else {

0 commit comments

Comments
 (0)