You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2017/02/01 11:22:51 UTC
[jira] [Commented] (AMQ-6587) Failed to remove inactive destination
Topic: Destination still has an active subscription
[ https://issues.apache.org/jira/browse/AMQ-6587?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15848247#comment-15848247 ]
Gary Tully commented on AMQ-6587:
---------------------------------
There is some locking in RegionBroker using inactiveDestinationsPurgeLock. This does not cover addDestination which is probably intentional b/c it uses the shared destination map which allows for concurrent access. However new destinations are added to the map before matching subs are added. Which causes a race between gc and the addition of wildcard subscriptions. Adding subs before adding to the destination map looks like the simplest fix.
> Failed to remove inactive destination Topic: Destination still has an active subscription
> -----------------------------------------------------------------------------------------
>
> Key: AMQ-6587
> URL: https://issues.apache.org/jira/browse/AMQ-6587
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Reporter: Gary Tully
> Assignee: Gary Tully
>
> broker setSchedulePeriodForDestinationPurge, wildcard topic subscriber and anonymous publishers to new destinations.
> Race between addDestination and markForGc and canGc
> {code}
> ERROR region.RegionBroker: Failed to remove inactive destination Topic: destination=A.4725, subscriptions=1
> javax.jms.JMSException: Destination still has an active subscription: topic://A.4725
> at org.apache.activemq.broker.region.AbstractRegion.removeDestination(AbstractRegion.java:271)
> at org.apache.activemq.broker.region.RegionBroker.removeDestination(RegionBroker.java:354)
> at org.apache.activemq.broker.BrokerFilter.removeDestination(BrokerFilter.java:179)
> at org.apache.activemq.broker.BrokerFilter.removeDestination(BrokerFilter.java:179)
> at org.apache.activemq.broker.BrokerFilter.removeDestination(BrokerFilter.java:179)
> at org.apache.activemq.broker.region.RegionBroker.purgeInactiveDestinations(RegionBroker.java:897)
> at org.apache.activemq.broker.region.RegionBroker$1.run(RegionBroker.java:118)
> at org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
> at java.util.TimerThread.mainLoop(Timer.java:555)
> at java.util.TimerThread.run(Timer.java:505)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)