activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Tully (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (AMQ-2277) NIO SelectorWorker not protecting its Selector from mutable operations
Date Wed, 03 Jun 2009 09:25:50 GMT

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

Gary Tully resolved AMQ-2277.
-----------------------------

    Resolution: Fixed

patch applied in r781312,
thanks.

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


Mime
View raw message