[ https://issues.apache.org/jira/browse/HTTPCLIENT-2389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Oleg Kalnichevski resolved HTTPCLIENT-2389. ------------------------------------------- Fix Version/s: 5.5 Resolution: Fixed [~gjasinski] I believe this defect has been fixed in 5.5 by https://github.com/apache/httpcomponents-client/commit/2f6694fcf3326647aeede50df602806a8ef98d30 Please upgrade to HttpClient 5.5, re-test and if the problem still persists, re-open the ticket. Oleg > Connection is not released after receiving "execution cancelled" > ---------------------------------------------------------------- > > Key: HTTPCLIENT-2389 > URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2389 > Project: HttpComponents HttpClient > Issue Type: Bug > Components: HttpClient (async) > Affects Versions: 5.4.1 > Reporter: Grzegorz Jasiński > Priority: Major > Fix For: 5.5 > > Attachments: leak.log > > > Hello, > I am working with httpclient async. I had encountered resource leak caused by > race condition. > The execution of request was cancelled in the very end of call. > {code:java} > 20250812 > 05:23:21.072|pool-14-thread-1|DEBUG|org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec| > ex-0105065338: execution cancelled{code} > This caused calling InternalHttpAsyncExecRuntime method: > markConnectionNonReusable. > This method had set validDuration = null. This was done by thread > pool-14-thread-1 > > In the same time "successful" path tried to release resource, it was done in > PoolingAsyncClientConnectionManager release method. In this method there was > verification of validDuration to not be null. Because other thread changed it > to null, this check failed to release resource which is causing memory leak. > This was done by thread: httpclient-dispatch-3 > {code:java} > 20250812 > 05:23:21.072|httpclient-dispatch-3|DEBUG|org.apache.hc.client5.http.impl.async.InternalAbstractHttpAsyncClient| > ex-0105065338 message exchange successful > 20250812 > 05:23:21.072|httpclient-dispatch-3|DEBUG|org.apache.hc.client5.http.impl.async.InternalHttpAsyncClient| > ep-0105065112 releasing valid endpoint > 20250812 > 05:23:21.072|httpclient-dispatch-3|DEBUG|org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec| > ex-0105065338: execution failed: Keep-alive time > {code} > > > > stack trace for thread pool-14-thread-1: > LoggingAsyncClientExchangeHandler cancel() line 181 > HttpAsyncMainClientExec --> AsyncClientExchangeHandler cancel() line 140 > HttpAsyncMainClientExec --> AsyncClientExchangeHandler cancel() line 130 > InternalHttpAsyncExecRuntime markConnectionNonReusable() line 337 <- > *problematic line - set null* > > stack trace for httpclient-dispatch-3 > InternalAbstractHttpAsyncClient -->AsyncExecCallback completed() line 336 > InternalHttpAsyncExecRuntime releaseEndpoint() line 160 <-- in here > *validDuration is null* > PoolingAsyncClientConnectionManager release() line 389 <- in here > *validDuration is verified if it is null, this is causing exception and is > not releasing resource* > > Full logs: > leak.log (attachment) > -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org