[
https://issues.apache.org/jira/browse/ASYNCWEB-1?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tuure Laurinolli updated ASYNCWEB-1:
------------------------------------
Attachment: add-dispose-method.patch
Adds dispose() method to allow working around NioSocketConnector leak.
> 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
> Attachments: add-dispose-method.patch, fix-deadlock.patch
>
>
> 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.