Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-3455

Broker may deadlock when creating queues under load with wildcard consumers

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.5.0
    • 5.6.0
    • Broker
    • None

    Description

      Found one Java-level deadlock:
      =============================
      "ActiveMQ NIO Worker":
        waiting to lock monitor 108de7878 (object 7f4ca0520, a org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor),
        which is held by "ActiveMQ NIO Worker"
      "ActiveMQ NIO Worker":
        waiting to lock monitor 108de64c8 (object 7f4ca1468, a java.lang.Object),
        which is held by "ActiveMQ NIO Worker"
      "ActiveMQ NIO Worker":
        waiting to lock monitor 108de7878 (object 7f4ca0520, a org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor),
        which is held by "ActiveMQ NIO Worker"
      
      Java stack information for the threads listed above:
      ===================================================
      "ActiveMQ NIO Worker":
      	at org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor.create(VirtualDestinationInterceptor.java:67)
      	- waiting to lock <7f4ca0520> (a org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor)
      	at org.apache.activemq.broker.region.CompositeDestinationInterceptor.create(CompositeDestinationInterceptor.java:52)
      	at org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:450)
      	at org.apache.activemq.broker.jmx.ManagedRegionBroker.addConsumer(ManagedRegionBroker.java:247)
      	at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89)
      	at org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:80)
      	at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89)
      	at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89)
      	at org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:95)
      	at org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:556)
      	at org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:349)
      	at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:316)
      	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
      	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69)
      	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
      	at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:227)
      	- locked <7f5c933e8> (a org.apache.activemq.transport.InactivityMonitor$1)
      	at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
      	at org.apache.activemq.transport.nio.NIOTransport.serviceRead(NIOTransport.java:138)
      	at org.apache.activemq.transport.nio.NIOTransport$1.onSelect(NIOTransport.java:69)
      	at org.apache.activemq.transport.nio.SelectorSelection.onSelect(SelectorSelection.java:94)
      	at org.apache.activemq.transport.nio.SelectorWorker$1.run(SelectorWorker.java:119)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:680)
      "ActiveMQ NIO Worker":
      	at org.apache.activemq.broker.region.AbstractRegion.getDestinations(AbstractRegion.java:231)
      	- waiting to lock <7f4ca1468> (a java.lang.Object)
      	at org.apache.activemq.broker.region.RegionBroker.getDestinations(RegionBroker.java:145)
      	at org.apache.activemq.broker.region.virtual.VirtualTopic.create(VirtualTopic.java:56)
      	at org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor.create(VirtualDestinationInterceptor.java:68)
      	- locked <7f4ca0520> (a org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor)
      	at org.apache.activemq.broker.region.CompositeDestinationInterceptor.create(CompositeDestinationInterceptor.java:52)
      	at org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:450)
      	at org.apache.activemq.broker.jmx.ManagedRegionBroker.addConsumer(ManagedRegionBroker.java:247)
      	at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89)
      	at org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:80)
      	at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89)
      	at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89)
      	at org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:95)
      	at org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:556)
      	at org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:349)
      	at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:316)
      	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
      	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69)
      	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
      	at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:227)
      	- locked <7f564acc8> (a org.apache.activemq.transport.InactivityMonitor$1)
      	at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
      	at org.apache.activemq.transport.nio.NIOTransport.serviceRead(NIOTransport.java:138)
      	at org.apache.activemq.transport.nio.NIOTransport$1.onSelect(NIOTransport.java:69)
      	at org.apache.activemq.transport.nio.SelectorSelection.onSelect(SelectorSelection.java:94)
      	at org.apache.activemq.transport.nio.SelectorWorker$1.run(SelectorWorker.java:119)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:680)
      "ActiveMQ NIO Worker":
      	at org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor.intercept(VirtualDestinationInterceptor.java:47)
      	- waiting to lock <7f4ca0520> (a org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor)
      	at org.apache.activemq.broker.region.CompositeDestinationInterceptor.intercept(CompositeDestinationInterceptor.java:38)
      	at org.apache.activemq.broker.region.AbstractRegion.addDestination(AbstractRegion.java:129)
      	- locked <7f4ca1468> (a java.lang.Object)
      	at org.apache.activemq.broker.region.RegionBroker.addDestination(RegionBroker.java:301)
      	at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)
      	at org.apache.activemq.advisory.AdvisoryBroker.addDestination(AdvisoryBroker.java:155)
      	at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)
      	at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)
      	at org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:151)
      	at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:520)
      	at org.apache.activemq.broker.jmx.ManagedRegionBroker.send(ManagedRegionBroker.java:300)
      	at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:129)
      	at org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96)
      	at org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:306)
      	at org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:135)
      	at org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:468)
      	at org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:681)
      	at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:316)
      	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
      	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69)
      	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
      	at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:227)
      	- locked <7f52f5a90> (a org.apache.activemq.transport.InactivityMonitor$1)
      	at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
      	at org.apache.activemq.transport.nio.NIOTransport.serviceRead(NIOTransport.java:138)
      	at org.apache.activemq.transport.nio.NIOTransport$1.onSelect(NIOTransport.java:69)
      	at org.apache.activemq.transport.nio.SelectorSelection.onSelect(SelectorSelection.java:94)
      	at org.apache.activemq.transport.nio.SelectorWorker$1.run(SelectorWorker.java:119)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:680)
      
      Found 1 deadlock.

      Attachments

        Activity

          People

            gtully Gary Tully
            gtully Gary Tully
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: