From 661e7fc08f83d360b44d0f15d92be78bd035d8b5 Mon Sep 17 00:00:00 2001 From: Ryan Schmitt Date: Thu, 9 Oct 2025 21:50:39 -0700 Subject: [PATCH] PoolingAsyncClientConnectionManager: Use `StaleCheckCommand` --- .../nio/PoolingAsyncClientConnectionManager.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java index feda279e28..abae03ffd1 100644 --- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java +++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java @@ -70,6 +70,7 @@ import org.apache.hc.core5.http.nio.AsyncPushConsumer; import org.apache.hc.core5.http.nio.HandlerFactory; import org.apache.hc.core5.http.nio.command.RequestExecutionCommand; +import org.apache.hc.core5.http.nio.command.StaleCheckCommand; import org.apache.hc.core5.http.nio.ssl.TlsStrategy; import org.apache.hc.core5.http.protocol.HttpContext; import org.apache.hc.core5.http2.HttpVersionPolicy; @@ -326,6 +327,17 @@ public void completed(final PoolEntry p leaseCompleted(poolEntry); })), Command.Priority.IMMEDIATE); return; + } else { + connection.submitCommand(new StaleCheckCommand(result -> { + if (!Boolean.TRUE.equals(result)) { + if (LOG.isDebugEnabled()) { + LOG.debug("{} connection {} is stale", id, ConnPoolSupport.getId(connection)); + } + poolEntry.discardConnection(CloseMode.GRACEFUL); + } + leaseCompleted(poolEntry); + }), Command.Priority.IMMEDIATE); + return; } } }