You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Emmanuel Lecharny (JIRA)" <ji...@apache.org> on 2010/01/17 18:31:54 UTC

[jira] Resolved: (DIRMINA-755) IoConnectot.dispose blocks forever

     [ https://issues.apache.org/jira/browse/DIRMINA-755?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Emmanuel Lecharny resolved DIRMINA-755.
---------------------------------------

    Resolution: Fixed

Ok, the dispose done in a listener does not block anymore.

We were stupidly telling the thread to wait for itself to be terminated to exit...

We now exit immediately after having shutdown the executor. Works much better !

http://svn.apache.org/viewvc?view=revision&revision=900163


> IoConnectot.dispose blocks forever
> ----------------------------------
>
>                 Key: DIRMINA-755
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-755
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 2.0.0-RC1
>            Reporter: Emmanuel Lecharny
>             Fix For: 2.0.0-RC2
>
>         Attachments: MinaTest.zip
>
>
> (Extracted from the ML)
> I recently switched from 2.0.0-M6 to 2.0.0-RC1 and now discovered a
> problem with the IoConnector (I'm using the nio stuff)...
> I'll try to explain:
> In case of network connection shutdown I try to clean up as good as
> possible. I terminate tread pools, I close the session, and finally I try
> to dispose the IoConnector. 
> Here's a small code-snippet from my shutdown-code:
> ----
> CloseFuture closeFuture = ctsc.getSession().close(false);
>                     closeFuture.addListener(new
> IoFutureListener<IoFuture>() {
>                         public void operationComplete(IoFuture future) {
>                             ctsc.getFilterchainWorkerPool().shutdown();
>                             System.out.println("managed session count=
> "+ctsc.getConnector().getManagedSessionCount());
>                             ctsc.getConnector().dispose();
>                         }
>                     });
> ----
> "ctsc" is a simple container which contains the session (getSession) and
> the used connection (getConnector). First I try to close the session. Then,
> if this operation is completed, I try to shutdown a thread pool and finally
> dispose the connector. I read in the api doc, that this dispose call may
> block in case of still open session related to this connector.
> I tried to print out the number of still open sessions. On the console I
> get: "managed session count= 0"
> But the next call, the dispose() call, blocks and prevents the remaining
> threads from shutdown to get a clean application termination.
> If I switch from RC1 backt o M6, this works quite well. 
> Am I doing something wrong? Has the behavior changed? *little bit
> confused*

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