[ https://issues.apache.org/jira/browse/AMQ-3741?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Timothy Bish closed AMQ-3741. ----------------------------- Resolution: Fixed >From a code review of trunk this is already resolved by other fixes that have >changed the locking strategy for the destinations collection. > Deadlock on Broker when JMX is enabled > -------------------------------------- > > Key: AMQ-3741 > URL: https://issues.apache.org/jira/browse/AMQ-3741 > Project: ActiveMQ > Issue Type: Bug > Components: Broker, JMX > Affects Versions: 5.4.3, 5.5.1 > Reporter: Krzysztof Olszewski > Priority: Critical > > With JMX enabled a deadlock might occur due to the fact that there are two > broker objects with common Destinations. > Let me provide you with a stacktrace that will clear this up: > Thread: Thread[ActiveMQ Transport: > ssl:///10.0.0.1:52293,5,spring-osgi-extender[435a3a]-threads] > Name: ActiveMQ Transport: ssl:///10.0.0.1:52293 > Priority: 5 > Status: BLOCKED > StackTrace: > > org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor.intercept(VirtualDestinationInterceptor.java:47) > -> public synchronized Destination intercept(...) > > org.apache.activemq.broker.region.CompositeDestinationInterceptor.intercept(CompositeDestinationInterceptor.java:38) > > org.apache.activemq.broker.region.AbstractRegion.addDestination(AbstractRegion.java:127) > -> synchronized (destinationsMutex) > > org.apache.activemq.broker.region.RegionBroker.addDestination(RegionBroker.java:298) > > org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145) > > org.apache.activemq.advisory.AdvisoryBroker.addDestination(AdvisoryBroker.java:145) > > org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145) > > org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145) > > org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:151) > > org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145) > > org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145) > > org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:151) > > org.apache.activemq.broker.region.RegionBroker.addProducer(RegionBroker.java:396) > -> synchronized (purgeInactiveDestinationsTask) > > org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93) > > org.apache.activemq.advisory.AdvisoryBroker.addProducer(AdvisoryBroker.java:133) > > org.apache.activemq.broker.CompositeDestinationBroker.addProducer(CompositeDestinationBroker.java:56) > > org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93) > > org.apache.activemq.broker.MutableBrokerFilter.addProducer(MutableBrokerFilter.java:99) > > org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93) > > org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93) > > org.apache.activemq.broker.MutableBrokerFilter.addProducer(MutableBrokerFilter.java:99) > > org.apache.activemq.broker.TransportConnection.processAddProducer(TransportConnection.java:507) > > org.apache.activemq.command.ProducerInfo.visit(ProducerInfo.java:105) > > org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:306) > > org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179) > > org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69) > > org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) > > org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:227) > > org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) > > org.apache.activemq.transport.tcp.SslTransport.doConsume(SslTransport.java:91) > > org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:220) > > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:202) > java.lang.Thread.run(Thread.java:619) > > > > > Thread: Thread[ActiveMQ Transport: > ssl:///10.0.0.1:52148,5,spring-osgi-extender[435a3a]-threads] > Name: ActiveMQ Transport: ssl:///10.0.0.1:52148 > Priority: 5 > Status: BLOCKED > StackTrace: > > org.apache.activemq.broker.region.AbstractRegion.getDestinations(AbstractRegion.java:217) > -> synchronized (destinationsMutex) > > org.apache.activemq.broker.region.RegionBroker.getDestinations(RegionBroker.java:142) > > org.apache.activemq.broker.region.virtual.VirtualTopic.create(VirtualTopic.java:56) > > org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor.create(VirtualDestinationInterceptor.java:68) > -> public synchronized void create(...) > > org.apache.activemq.broker.region.CompositeDestinationInterceptor.create(CompositeDestinationInterceptor.java:52) > > org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:442) > -> synchronized (purgeInactiveDestinationsTask) > > org.apache.activemq.broker.jmx.ManagedRegionBroker.addConsumer(ManagedRegionBroker.java:240) > > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89) > > org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:79) > > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89) > > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89) > > org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:95) > > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89) > > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:89) > > org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:95) > > org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:546) > > org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:349) > > org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:306) > > org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179) > > org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116) > > org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69) > > org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:121) > > org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:112) > > org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40) > > org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60) > > org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:672) > > org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1025) > > org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:605) > > org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:497) > > org.apache.activemq.network.DemandForwardingBridgeSupport$2.onCommand(DemandForwardingBridgeSupport.java:165) > > org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116) > > org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69) > > org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) > > org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:227) > > org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) > > org.apache.activemq.transport.tcp.SslTransport.doConsume(SslTransport.java:91) > > org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:220) > > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:202) > java.lang.Thread.run(Thread.java:619) > -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira