From 1a5742793b7d8fb6bca1b87c330a20215336dd76 Mon Sep 17 00:00:00 2001 From: Dmitry Kropachev Date: Tue, 21 Jul 2026 16:03:51 -0400 Subject: [PATCH] Close polling client during live node shutdown --- .../scylladb/alternator/internal/AlternatorLiveNodes.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/scylladb/alternator/internal/AlternatorLiveNodes.java b/src/main/java/com/scylladb/alternator/internal/AlternatorLiveNodes.java index 979f5be..c331cad 100644 --- a/src/main/java/com/scylladb/alternator/internal/AlternatorLiveNodes.java +++ b/src/main/java/com/scylladb/alternator/internal/AlternatorLiveNodes.java @@ -47,6 +47,7 @@ public class AlternatorLiveNodes extends Thread { private final AtomicBoolean shutdownRequested = new AtomicBoolean(false); private final SdkHttpClient pollingHttpClient; private final boolean ownsPollingClient; + private final AtomicBoolean pollingClientClosed = new AtomicBoolean(false); private final AtomicLong lastActivityTime = new AtomicLong(0); private final LocalNodesResponseParser localNodesResponseParser; @@ -94,7 +95,9 @@ public void run() { /** Closes the polling HTTP client if this instance owns it. */ private void closePollingClient() { - if (ownsPollingClient && pollingHttpClient != null) { + if (ownsPollingClient + && pollingHttpClient != null + && pollingClientClosed.compareAndSet(false, true)) { pollingHttpClient.close(); } } @@ -110,6 +113,7 @@ private void closePollingClient() { public void shutdown() { shutdownRequested.set(true); this.interrupt(); + closePollingClient(); } /**