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)