[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-2379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17993128#comment-17993128
 ] 

Arturo Bernal commented on HTTPCLIENT-2379:
-------------------------------------------

[~olegk] 

The counter logic itself looks fine IMO—the issue seems to be in the *second 
call* to {{release()}} on the same {{PoolEntry}} after it has already been 
handed back to the parent pool.
Adding this one-line guard in {{H2SharingConnPool#release}} turns that 
duplicate call into a no-op and keeps the “count-zero-only-once” invariant 
intact:

 

 
{code:java}
if (perRoutePool != null && perRoutePool.getCount(entry) == 0) {
    return;   // duplicate release – ignore
} {code}
 

 

With this check the first release delegates once (as designed); later releases 
are ignored, so the delegate pool never sees the entry again and the 
{{IllegalStateException}} disappears.  I'm saying something stupid?? 

> Multiple removal of same PoolEntry causes IllegalStateException in 
> H2SharingConnPool
> ------------------------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-2379
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2379
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient (async)
>    Affects Versions: 5.5
>            Reporter: yhzdys
>            Priority: Major
>             Fix For: 5.5.1, 5.6-alpha1
>
>          Time Spent: 2h 40m
>  Remaining Estimate: 0h
>
> After enabling messageMultiplexing, the H2SharingConnPool is used to reuse 
> PoolEntry.
> When making more than one request using the same connection, if the 
> connection is closed,
> the pool.release(entry, reusable) method at H2SharingConnPool.java:183 will 
> throw the following exception:
> ~~~java
> throw new IllegalStateException("Pool entry is not present in the set of 
> leased entries");
> ~~~
> This occurs because the same connection is being removed multiple times.
> https://github.com/yhzdys/httpcomponents-client/commit/c8256b33c3adb45cfa2a49efb2dacfb611da9ac1



--
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

Reply via email to