You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2009/06/02 12:11:50 UTC

[jira] Assigned: (AMQ-2277) NIO SelectorWorker not protecting its Selector from mutable operations

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

Gary Tully reassigned AMQ-2277:
-------------------------------

    Assignee: Gary Tully

> NIO SelectorWorker not protecting its Selector from mutable operations
> ----------------------------------------------------------------------
>
>                 Key: AMQ-2277
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2277
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.2.0
>         Environment: 5.2.x, trunk. Problem seen on Linux and Solaris.
>            Reporter: Dave Stanley
>            Assignee: Gary Tully
>         Attachments: nio_patch.txt
>
>
> When you hit the NIO transport with heavy concurrent connection load the brokers thread usage spikes with lots of threads in the state below.   
> "ActiveMQ Transport Initiator: /10.129.112.166:59560" daemon prio=10 tid=0x007a2fc0 nid=0x34b waiting for monitor entry [0xc4381000..0xc4381888]
>         at org.apache.activemq.transport.nio.SelectorManager.register(SelectorManager.java:65)
>         - waiting to lock <0xd8b1d920> (a org.apache.activemq.transport.nio.SelectorManager)
>         at org.apache.activemq.transport.nio.NIOTransport.initializeStreams(NIOTransport.java:66)
>         at org.apache.activemq.transport.tcp.TcpTransport.connect(TcpTransport.java:453)
>         at org.apache.activemq.transport.nio.NIOTransport.doStart(NIOTransport.java:146)
>         at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:53)        at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:57)
>         at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:57)
>         at org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:72)
>         at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:57)
>         at org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:880)
>         - locked <0xdb727578> (a org.apache.activemq.broker.jmx.ManagedTransportConnection)
>         at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:213)
> Problem is easily reproducible when consumer/producer are on a different machine to the broker - when running everything locally .. not so much.
> It seems the SelectorWorker is not tolerant of lots of concurrent updates to the state of the Selector, and the selector gets into a bad state. 
> Attached patch seems to resolve the issue. Patch adds some locking around when selectorKeys are registered and canceled.

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