AsyncHttpClient does not dispose its NioSocketConnector
-------------------------------------------------------

                 Key: ASYNCWEB-1
                 URL: https://issues.apache.org/jira/browse/ASYNCWEB-1
             Project: Asyncweb
          Issue Type: Bug
            Reporter: Tuure Laurinolli


As has been discussed on the MINA mailing list, NioSocketConnector does not 
dispose its NioSocketConnector when it isn't used anymore. This leads to 
significant resource leakage (on my Java 1.6 / Linux machine, 12 fds per 
AsyncHttpClient).

The first attempt to fix this was to call dispose() in sessionClosed() of 
HttpIoHandler, but this causes a deadlock. My first patch reverts that change.

It would seem that there is no good way for AsyncHttpClient to close the 
NioSocketConnector, since closing it from an IoHandler event handling method 
called on an IoSession created through the connector leads to deadlock. 
Therefore I added dispose()-method to AsyncHttpClient (second patch), which can 
be used to dispose the client when the user of the client is done with it (care 
must be taken not to do this from the AsyncHttpClientCallback, since its 
methods are called from HttpIoHandler and will lead to the same deadlock that 
was mentioned).

This is an ugly minimal workaround rather than a proper fix, but at least it 
makes it possible to use AsyncHttpClient while discussion about how to replace 
it is going on.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to