Description
I was upgrading to the new httpclient5 (more specifically 5.2.1) and noticed an issue where the StrictConnPool does not return accurate stats for the number of pending request.
I created an httpClient with connectionRequestTimeout=2000 (2 seconds), responseTimeout=12000 (12s) and maxConnTotal=1 on the poolingHttpClientConnectionManager.
The connection request timeout works as expected, when I make a slow request that runs for 10 seconds, and in the meantime I start a second one, the second request will fail after 2 seconds, as there is no available connection.
However, after the 2 seconds, when the second connection throws a timeout exception I check the poolingHttpClientConnectionManager.getTotalStats().getPending(),
I am still receiving 1 (meaning there is one request that is waiting for a free connection), even though this is not true since the request timed out after the configured 2 seconds.
This number gets back to 0, only when the first connection is released (the first 10 second request finishes). I checked the same behavior with the old client (httpclient 4.5.14) and there the pending requests was decremented right after the connection request timeout is reached.