Uploaded image for project: 'JBoss A-MQ'
  1. JBoss A-MQ
  2. ENTMQ-1504

[A-MQ, broker] disableAsyncDispatch="true" on transport connector appear to cause a thread deadlock

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Do
    • Major
    • None
    • JBoss A-MQ 6.2.1
    • broker
    • None

    Description

      the following deadlock was reported in the broker thread dump| Java stack information for the threads listed above:|

      ===================================================
      "ActiveMQ BrokerService[amq] Task-44":
      at sun.misc.Unsafe.park(Native Method)
      - parking to wait for <0x000000009ba00548> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
      at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
      at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
      at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
      at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:66)
      at org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1432)
      at org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:946)
      at org.apache.activemq.broker.TransportConnection.dispatchSync(TransportConnection.java:902)
      at org.apache.activemq.broker.TransportConnection.dispatchAsync(TransportConnection.java:912)
      at org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:1045)
      - locked <0x000000009ba005d0> (a org.apache.activemq.broker.TransportConnection)
      at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:218)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      at java.lang.Thread.run(Thread.java:745)
      "ActiveMQ NIO Worker 31":
      at org.apache.activemq.broker.TransportConnection.registerConnectionState(TransportConnection.java:1584)
      - waiting to lock <0x000000009ba005d0> (a org.apache.activemq.broker.TransportConnection)
      at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:789)
      at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139)
      at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:338)
      at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:188)
      at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:45)
      at org.apache.activemq.transport.mqtt.MQTTInactivityMonitor.onCommand(MQTTInactivityMonitor.java:162)
      at org.apache.activemq.transport.mqtt.MQTTTransportFilter.sendToActiveMQ(MQTTTransportFilter.java:107)
      at org.apache.activemq.transport.mqtt.MQTTProtocolConverter.sendToActiveMQ(MQTTProtocolConverter.java:178)
      at org.apache.activemq.transport.mqtt.MQTTProtocolConverter.onMQTTConnect(MQTTProtocolConverter.java:282)
      at org.apache.activemq.transport.mqtt.MQTTProtocolConverter.onMQTTCommand(MQTTProtocolConverter.java:201)
      at org.apache.activemq.transport.mqtt.MQTTTransportFilter.onCommand(MQTTTransportFilter.java:95)
      at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
      at org.apache.activemq.transport.mqtt.MQTTCodec$1.onFrame(MQTTCodec.java:65)
      at org.apache.activemq.transport.mqtt.MQTTCodec.processCommand(MQTTCodec.java:90)
      at org.apache.activemq.transport.mqtt.MQTTCodec.access$400(MQTTCodec.java:26)
      at org.apache.activemq.transport.mqtt.MQTTCodec$4.parse(MQTTCodec.java:213)
      at org.apache.activemq.transport.mqtt.MQTTCodec$3.parse(MQTTCodec.java:179)
      at org.apache.activemq.transport.mqtt.MQTTCodec$2.parse(MQTTCodec.java:138)
      at org.apache.activemq.transport.mqtt.MQTTCodec.parse(MQTTCodec.java:76)
      at org.apache.activemq.transport.mqtt.MQTTNIOTransport.serviceRead(MQTTNIOTransport.java:108)
      at org.apache.activemq.transport.mqtt.MQTTNIOTransport.access$000(MQTTNIOTransport.java:43)
      at org.apache.activemq.transport.mqtt.MQTTNIOTransport$1.onSelect(MQTTNIOTransport.java:68)
      at org.apache.activemq.transport.nio.SelectorSelection.onSelect(SelectorSelection.java:97)
      at org.apache.activemq.transport.nio.SelectorWorker$1.run(SelectorWorker.java:119)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      at java.lang.Thread.run(Thread.java:745)
      ...

      Engineering initial analysis suggests this could occur when using disableAsyncDispatch="true" on the transport connector.

      Attachments

        Activity

          People

            dejanbosanac Dejan Bosanac
            rhn-support-pfox Patrick Fox (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: