Hi Oleg,
Ok, let me explain a bit more. This comes from a previous mistake in our
AsyncResponseConsumer.
Some weeks ago I wrote you an email because we were having an issue where
threads got stuck, streamEnd and failed methods were never called, and the
thread was released when the container asynchronous timeout was reached. As you
notice, the issue was in our updateCapacity method because we were doing
nothing on it, instead of extending the capacity of the buffer. This was fixed.
Now the current issue. Something similar is happening. After several days of
execution, requests start to throw an exception because the container
asynchronous timeout is reached. Tracing http, we saw the pool exhausted ... so
it's a behavior similar to issue nr. 1.
08:14:03.054 Connection request: [route: {}->http://10.15.15.53:8083][total
kept alive: 0; route allocated: 107 of 1500; total allocated: 1500 of 1500]
That's why I asked you if it's possible the 'updateCapacity' method to be
called but without previously calling the 'consumeResponse' method with a
non-null entity. In this case the variable 'this.capacityToPerform' we use to
extend the buffer will be 0 and we will be again in the first issue.
So I think the pool exhausted is a consequence the thread that is managing the
'AsyncResponseConsumer' is not ending for some reason (like in the first issue).
Is there something else (like updating the capacity) I have to take into
account in the ' AsyncResponseConsumer ' to avoid hanging the execution?
Thanks,
Joan.
-----Original Message-----
From: Oleg Kalnichevski <[email protected]>
Sent: Friday, June 7, 2019 4:00 PM
To: HttpClient User Discussion <[email protected]>
Subject: Re: Response timeout issue
On Thu, 2019-06-06 at 18:56 +0200, Joan grupoventus wrote:
> Hi again,
>
> Not sure if we have seen something strange in the current test with
> the keep alive connections. It's just a GET method to get a gif (this
> pool has no keep-alive, that means a 100ms keep-alive). Here the
> complete http log: https://github.com/joanbalaguero/HttpClient.git
> (it's the "http_get.log")
Joan
I am confused. I looked at http_get.log and I can see the exact same number of
connection lease requests and that of released connections.
There are two 253 message exchanges and the same number of connection lease /
release operations.
I am not seeing any evidence of connections being leaked. I am lost now. What
is exactly the issue you are having?
Oleg
> Previously to this test, this pool received 4 requests today
> 06/06/2019 around 11:15:00 (so 6 hours before the test), these 4
> requests ended up with a 4xx status code.
>
> This is the first request we sent to this pool using this route.
> Should not keep-alive be 0 and total allocated 1 of 1000?
> -------------------------------------------------------------------
> ------------
> 17:23:02.692 ex-0105B9B8: preparing request execution
> 17:23:02.692 Target auth state: UNCHALLENGED
> 17:23:02.692 Proxy auth state: UNCHALLENGED
> 17:23:02.692 ex-0105B9B8: acquiring connection with route {}->
> http://andalucia.viajesolympia.com:80
> 17:23:02.692 Connection request: [route: {}->
> http://andalucia.viajesolympia.com:80][total kept alive: 1; route
> allocated: 0 of 1000; total allocated: 1 of 1000]
> 17:23:02.692 Connection leased: [route: {}->
> http://andalucia.viajesolympia.com:80][total kept alive: 1; route
> allocated: 1 of 1000; total allocated: 2 of 1000]
> 17:23:02.692 ep-010526BF: acquired null
> 17:23:02.692 ex-0105B9B8: connection acquired
>
> This is the second:
> ------------------------
> 17:23:02.954 ex-0105B9B9: preparing request execution
> 17:23:02.955 Target auth state: UNCHALLENGED
> 17:23:02.955 Proxy auth state: UNCHALLENGED
> 17:23:02.955 ex-0105B9B9: acquiring connection with route {}->
> http://andalucia.viajesolympia.com:80
> 17:23:02.955 Connection request: [route: {}->
> http://andalucia.viajesolympia.com:80][total kept alive: 2; route
> allocated: 1 of 1000; total allocated: 2 of 1000]
> 17:23:02.955 Connection leased: [route: {}->
> http://andalucia.viajesolympia.com:80][total kept alive: 1; route
> allocated: 1 of 1000; total allocated: 2 of 1000]
> 17:23:02.955 ep-010526C0: acquired null
> 17:23:02.955 ex-0105B9B9: connection acquired
> 17:23:02.976 ep-010526C0: connected i/o-0000434A
> 17:23:02.976 Connected to target
> 17:23:02.976 Route fully established
>
> ( . . . )
>
> Now a pool reboot
> -------------------------
> 17:27:29.996 Shutdown connection pool GRACEFUL
> 17:27:29.996 i/o-000043AF: Shutdown connection GRACEFUL
> 17:27:29.996 i/o-00002D9A: Shutdown connection GRACEFUL
> 17:27:29.996 Connection pool shut down
> 17:27:29.997 Shutdown GRACEFUL
>
> 1st. request after rebooting. Here keep-alive = 0 and total_allocated
> = 1
> -------------------------------------
> 17:27:53.585 ex-0105BA49: preparing request execution
> 17:27:53.585 Target auth state: UNCHALLENGED
> 17:27:53.585 Proxy auth state: UNCHALLENGED
> 17:27:53.585 ex-0105BA49: acquiring connection with route {}->
> http://andalucia.viajesolympia.com:80
> 17:27:53.585 Connection request: [route: {}->
> http://andalucia.viajesolympia.com:80][total kept alive: 0; route
> allocated: 0 of 1000; total allocated: 0 of 1000]
> 17:27:53.585 Connection leased: [route: {}->
> http://andalucia.viajesolympia.com:80][total kept alive: 0; route
> allocated: 1 of 1000; total allocated: 1 of 1000]
> 17:27:53.585 ep-01052750: acquired null
> 17:27:53.585 ex-0105BA49: connection acquired
> 17:27:53.609 ep-01052750: connected i/o-000043B0
> 17:27:53.609 Connected to target
> 17:27:53.609 Route fully established
>
>
> Thanks,
> Joan.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]