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/13 11:52:54 UTC

[jira] Updated: (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 updated DIRMINA-755:
--------------------------------------

    Attachment: MinaTest.zip

Hi there,

I now found time to build a small reproducer... (I hope attachments are
working properly in this mailinglist?!)

It's a tiny maven project, containing a echo-server and a simple client
that just sends "Hello World" and exits. 

Run the client&server with MINA 2.0.0-M6 and you will see, the client
terminates after sending the message.
Try the same with 2.0.0-RC1. The clients hangs in the connector.dispose()
call. 

I hope someone has to to look into  :-) 

> 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.