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 2009/07/29 23:49:15 UTC

[jira] Updated: (DIRMINA-722) SocketAcceptor.unbind can hang when unbinding only one of several service adresses

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

Emmanuel Lecharny updated DIRMINA-722:
--------------------------------------

    Fix Version/s: 1.0.11

> SocketAcceptor.unbind can hang when unbinding only one of several service adresses
> ----------------------------------------------------------------------------------
>
>                 Key: DIRMINA-722
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-722
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 1.0.10
>         Environment: Centos 5.3, JDK 1.6.0u11
>            Reporter: Rhys Yarranton
>             Fix For: 1.0.11
>
>
> If a SocketAcceptor
>  - has multiple service addresses bound and
>  - you unbind one of them and
>  - disconnectOnUnbind is true and
>  - the one being unbound has at least one session connected and
>  - some other session on the acceptor also has at least one session connected
> the unbind call can hang.  Excerpt from stack trace below.
> I suspect the hang is coming from IoServiceListenerSupport.disconnectSessions.  The sessions to be closed are in the sessions variable, which is a subset of managedSessions (line 280).  However, at lines 306-309, it is waiting (forever) for managedSessions to be empty.  This will never happen.
> This is 1..0.10.  The 1.1.7 code is different (it uses a countdown latch), and looks OK.
> "JBoss Shutdown Hook" daemon prio=10 tid=0x00002aab00d5b800 nid=0x114a in Object.wait() [0x00002aab23215000..0x00002aab23217c10]
>    java.lang.Thread.State: WAITING (on object monitor)
>         at java.lang.Object.wait(Native Method)
>         at java.lang.Object.wait(Object.java:485)
>         at org.apache.mina.transport.socket.nio.SocketAcceptor.unbind(SocketAcceptor.java:213)
>         - locked <0x00002aaab0370000> (a org.apache.mina.transport.socket.nio.SocketAcceptor$CancellationRequest)
> ...
> "SocketAcceptor-0" daemon prio=10 tid=0x00002aaafcd93000 nid=0x2ca in Object.wait() [0x000000004cbc8000..0x000000004cbc8a10]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
>         at java.lang.Object.wait(Native Method)
>         at org.apache.mina.common.support.IoServiceListenerSupport.disconnectSessions(IoServiceListenerSupport.java:308)
>         - locked <0x00002aaab0376670> (a java.lang.Object)
>         at org.apache.mina.common.support.IoServiceListenerSupport.fireServiceDeactivated(IoServiceListenerSupport.java:165)
>         - locked <0x00002aaab5e783c8> (a org.apache.mina.common.support.IoServiceListenerSupport)
>         at org.apache.mina.transport.socket.nio.SocketAcceptor.cancelKeys(SocketAcceptor.java:470)
>         at org.apache.mina.transport.socket.nio.SocketAcceptor.access$900(SocketAcceptor.java:53)
>         at org.apache.mina.transport.socket.nio.SocketAcceptor$Worker.run(SocketAcceptor.java:251)
>         at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
>         at java.lang.Thread.run(Thread.java:619)

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