[ 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)