You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by Christopher BROWN <br...@reflexe.fr> on 2014/04/14 14:12:55 UTC

Finalizer in PoolingHttpClientConnectionManager

Hello,

Using Apache HTTP Client 4.3+, and when tracking down an unrelated issue in
output from my own tests, I noticed a lot of messages like this showing up
in logs:

[Finalizer] DEBUG o.a.h.i.c.PoolingHttpClientConnectionManager - Connection
manager is shutting down

I suspected that I had a resource leak.  I creating my CloseableHttpClient
instances using the HttpClients.custom() builder and specifically providing
an instance (new, unique, dedicated) of PoolingHttpClientConnectionManager.
 I'd checked (by looking at the source code) that calling .close() on the
resulting HTTP client instance should have called shutdown() on the
connection manager, so I was a bit confused about why the connection
manager appeared to only get shut down by a finalizer (I assumed resource
leakage on my part or a bad understanding of how I should close the HTTP
client).

After investigation, it appears that this message is ALWAYS logged, because
finalize() ALWAYS calls shutdown(), and shutdown() ALWAYS claims that it's
shutting down something... even when it's already shutdown.

Maybe you could add a simple volatile boolean flag to the connection
manager so that calls from the finalizer don't generate misleading log
messages?

Thanks,
Christopher

Re: Finalizer in PoolingHttpClientConnectionManager

Posted by Christopher BROWN <br...@reflexe.fr>.
Hello Oleg,

Done: https://issues.apache.org/jira/browse/HTTPCLIENT-1495

Hope that helps.

--
Christopher



On 14 April 2014 16:27, Oleg Kalnichevski <ol...@apache.org> wrote:

> On Mon, 2014-04-14 at 14:12 +0200, Christopher BROWN wrote:
> > Hello,
> >
> > Using Apache HTTP Client 4.3+, and when tracking down an unrelated issue
> in
> > output from my own tests, I noticed a lot of messages like this showing
> up
> > in logs:
> >
> > [Finalizer] DEBUG o.a.h.i.c.PoolingHttpClientConnectionManager -
> Connection
> > manager is shutting down
> >
> > I suspected that I had a resource leak.  I creating my
> CloseableHttpClient
> > instances using the HttpClients.custom() builder and specifically
> providing
> > an instance (new, unique, dedicated) of
> PoolingHttpClientConnectionManager.
> >  I'd checked (by looking at the source code) that calling .close() on the
> > resulting HTTP client instance should have called shutdown() on the
> > connection manager, so I was a bit confused about why the connection
> > manager appeared to only get shut down by a finalizer (I assumed resource
> > leakage on my part or a bad understanding of how I should close the HTTP
> > client).
> >
> > After investigation, it appears that this message is ALWAYS logged,
> because
> > finalize() ALWAYS calls shutdown(), and shutdown() ALWAYS claims that
> it's
> > shutting down something... even when it's already shutdown.
> >
> > Maybe you could add a simple volatile boolean flag to the connection
> > manager so that calls from the finalizer don't generate misleading log
> > messages?
> >
> > Thanks,
> > Christopher
>
> Christopher
>
> I am currently in the process of making changes to that particular area
> of code in SVN trunk (4.4 branch) and am going to straighten out
> PoolingHttpClientConnectionManager's logging upon shutdown. Fee free to
> raise a JIRA for this issue if you want to be notified of its
> resolution.
>
> Oleg
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>

Re: Finalizer in PoolingHttpClientConnectionManager

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Mon, 2014-04-14 at 14:12 +0200, Christopher BROWN wrote:
> Hello,
> 
> Using Apache HTTP Client 4.3+, and when tracking down an unrelated issue in
> output from my own tests, I noticed a lot of messages like this showing up
> in logs:
> 
> [Finalizer] DEBUG o.a.h.i.c.PoolingHttpClientConnectionManager - Connection
> manager is shutting down
> 
> I suspected that I had a resource leak.  I creating my CloseableHttpClient
> instances using the HttpClients.custom() builder and specifically providing
> an instance (new, unique, dedicated) of PoolingHttpClientConnectionManager.
>  I'd checked (by looking at the source code) that calling .close() on the
> resulting HTTP client instance should have called shutdown() on the
> connection manager, so I was a bit confused about why the connection
> manager appeared to only get shut down by a finalizer (I assumed resource
> leakage on my part or a bad understanding of how I should close the HTTP
> client).
> 
> After investigation, it appears that this message is ALWAYS logged, because
> finalize() ALWAYS calls shutdown(), and shutdown() ALWAYS claims that it's
> shutting down something... even when it's already shutdown.
> 
> Maybe you could add a simple volatile boolean flag to the connection
> manager so that calls from the finalizer don't generate misleading log
> messages?
> 
> Thanks,
> Christopher

Christopher

I am currently in the process of making changes to that particular area
of code in SVN trunk (4.4 branch) and am going to straighten out
PoolingHttpClientConnectionManager's logging upon shutdown. Fee free to
raise a JIRA for this issue if you want to be notified of its
resolution.

Oleg


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org