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.