[prev in list] [next in list] [prev in thread] [next in thread]
List: activemq-dev
Subject: [jira] [Updated] (AMQ-4351) Deadlock when unsubscribing durable subscriber
From: "Frederik Colardyn (JIRA)" <jira () apache ! org>
Date: 2013-02-28 14:15:13
Message-ID: JIRA.12634386.1361959656200.357893.1362060913362 () arcas
[Download RAW message or body]
[ https://issues.apache.org/jira/browse/AMQ-4351?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]
Frederik Colardyn updated AMQ-4351:
-----------------------------------
Attachment: ActiveMQUnsubscribeTest.java
junit test
> Deadlock when unsubscribing durable subscriber
> ----------------------------------------------
>
> Key: AMQ-4351
> URL: https://issues.apache.org/jira/browse/AMQ-4351
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.7.0, 5.8.0
> Environment: Setup:
> Active MQ 5.7.0 with master/slave using JDBC store
> Approx 3 - 5 concurrent durable subscribers
> Approx 5 messages / sec
> Reporter: Tim Lammens
> Labels: patch
> Attachments: ActiveMQUnsubscribeTest.java, dispatcher.patch
>
>
> We started using durable subscribers a week ago, and after the 4th durable \
> subscriber unsubscribed (due to 1 hour inactivity), the system deadlocked. If the \
> "Durable Subscriber Cleanup Timer" goes of at the wrong time, your entire server \
> locks up.
> Setup:
> Active MQ 5.7.0 with master/slave using JDBC store
> Approx 3 - 5 concurrent durable subscribers
> Approx 5 messages / sec
> Active MQ checks every 1 minute for subscribers which have been offline for 1 hour. \
> Locked threads:
> "ActiveMQ Transport: tcp:///79.125.71.104:48082@8090":
> at org.apache.activemq.broker.region.Topic.doMessageSend(Topic.java:446)
> - waiting to lock <0x00000000c6228480> (a org.apache.activemq.broker.region.Topic)
> at org.apache.activemq.broker.region.Topic.send(Topic.java:427)
> at org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:407)
> at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:503)
> "ActiveMQ Transport: tcp:///79.125.71.104:47590@8090":
> at org.apache.activemq.broker.region.PrefetchSubscription.add(PrefetchSubscription.java:142) \
>
> - waiting to lock <0x00000000c66ba050> (a java.lang.Object)
> at org.apache.activemq.broker.region.DurableTopicSubscription.add(DurableTopicSubscription.java:243) \
> at org.apache.activemq.broker.region.policy.StrictOrderDispatchPolicy.dispatch(StrictOrderDispatchPolicy.java:58) \
> "ActiveMQ Durable Subscriber Cleanup Timer":
> at org.apache.activemq.broker.region.Topic.deactivate(Topic.java:288)
> - waiting to lock <0x00000000c6250670> (a \
> java.util.concurrent.CopyOnWriteArrayList) at \
> org.apache.activemq.broker.region.DurableTopicSubscription.deactivate(DurableTopicSubscription.java:184) \
>
> - locked <0x00000000c66ba060> (a java.lang.Object)
> - locked <0x00000000c66ba050> (a java.lang.Object)
> at org.apache.activemq.broker.region.Topic.deleteSubscription(Topic.java:195)
> at org.apache.activemq.broker.region.TopicRegion.removeSubscription(TopicRegion.java:199) \
> at org.apache.activemq.broker.region.TopicRegion.doCleanup(TopicRegion.java:99)
> I have attached a patch which fixes the problem.
> Since there is only one dispatch policy per Topic, synchronisation can happen on \
> the DispatchPolicy instead of on the consumers object which causes the deadlock.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic