Skip to content

Commit 297ec89

Browse files
Document OffLockDisposalCallback behaviour (#766)
Add class-level Javadoc explaining deferred graceful disposal semantics.
1 parent dfb0211 commit 297ec89

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

httpclient5/src/main/java/org/apache/hc/client5/http/impl/io/OffLockDisposalCallback.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,17 @@
3434
import org.apache.hc.core5.io.ModalCloseable;
3535
import org.apache.hc.core5.pool.DisposalCallback;
3636

37+
/**
38+
* {@link DisposalCallback} that defers graceful connection disposal so it can
39+
* be executed outside core pool synchronization.
40+
* <p>
41+
* Calls with {@link CloseMode#IMMEDIATE} are delegated directly to the
42+
* underlying callback on the caller thread. All other modes are queued and
43+
* later disposed with {@link CloseMode#GRACEFUL} when {@link #drain()} is
44+
* invoked by {@link PoolingHttpClientConnectionManager}.
45+
*
46+
* @since 5.6
47+
*/
3748
@Internal
3849
final class OffLockDisposalCallback<T extends ModalCloseable> implements DisposalCallback<T> {
3950

httpclient5/src/main/java/org/apache/hc/client5/http/impl/io/PoolingHttpClientConnectionManagerBuilder.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.apache.hc.core5.http.config.RegistryBuilder;
4747
import org.apache.hc.core5.http.io.HttpConnectionFactory;
4848
import org.apache.hc.core5.http.io.SocketConfig;
49+
import org.apache.hc.core5.io.CloseMode;
4950
import org.apache.hc.core5.pool.PoolConcurrencyPolicy;
5051
import org.apache.hc.core5.pool.PoolReusePolicy;
5152
import org.apache.hc.core5.util.TimeValue;
@@ -308,7 +309,17 @@ public final PoolingHttpClientConnectionManagerBuilder useSystemProperties() {
308309
}
309310

310311
/**
311-
* Enable/disable off-lock disposal.
312+
* Enable or disable off-lock connection disposal for blocking I/O pools.
313+
* <p>
314+
* When enabled, graceful connection closes are deferred and performed
315+
* outside the core pool synchronization in
316+
* {@link PoolingHttpClientConnectionManager}. This reduces the time spent
317+
* holding internal locks at the cost of slightly more complex disposal
318+
* logic. Immediate closes {@link CloseMode#IMMEDIATE} are still executed
319+
* on the caller thread.
320+
*
321+
* @param enabled {@code true} to enable off-lock disposal, {@code false} to disable
322+
* @return this builder
312323
* @since 5.6
313324
*/
314325
@Experimental
@@ -317,6 +328,7 @@ public final PoolingHttpClientConnectionManagerBuilder setOffLockDisposalEnabled
317328
return this;
318329
}
319330

331+
320332
@Internal
321333
protected HttpClientConnectionOperator createConnectionOperator(
322334
final SchemePortResolver schemePortResolver,

0 commit comments

Comments
 (0)