activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Bish (Resolved) (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (AMQ-3675) Removing a DurableTopicSubscription leaves subscription in active subscriptions map
Date Tue, 24 Jan 2012 20:40:41 GMT

     [ https://issues.apache.org/jira/browse/AMQ-3675?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Timothy Bish resolved AMQ-3675.
-------------------------------

       Resolution: Fixed
    Fix Version/s: 5.6.0
         Assignee: Timothy Bish

Cleaned up the test to remove the need for the activemq-web dependency and sleep calls, and
added some additional checks.  Applied suggested fix, thanks.
                
> Removing a DurableTopicSubscription leaves subscription in active subscriptions map
> -----------------------------------------------------------------------------------
>
>                 Key: AMQ-3675
>                 URL: https://issues.apache.org/jira/browse/AMQ-3675
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.5.1
>         Environment: 5.5.1, Mac OS X 10.7.2
>            Reporter: Dominic Tootell
>            Assignee: Timothy Bish
>            Priority: Minor
>              Labels: DurableSubscriptions, Topic
>             Fix For: 5.6.0
>
>         Attachments: CountConsumersAfterSubscriptionRemoval.java, TopicRegion.AMQ-3675.patch.txt
>
>
> - Url reference: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicRegion.java?revision=1160894&view=markup
> When removing a durable topic subscription, the *{{subscriptions}}* map is left with
the durable subscription on the map.  This means that if you were to remove the topic and
then recreate the topic, you end up with a continually increasing consumerCount on the Topic.
 Replication on the Web Admin console is:
> - Create inactive durable subscriber
> - delete the associated topic
> - delete inactive durable subscriber
> - Create inactive durable subscriber
> The topic will now think/show it has 2 subscribers on the destinationStatistics associated
with the topic.
> This seems to boil down to an accidental use of identity comparison on the *{{subscriptions}}*
map in the method *{{public void removeSubscription(ConnectionContext context, RemoveSubscriptionInfo
info) throws Exception }}*:
> {noformat}
> 196  if (subscriptions.get(sub.getConsumerInfo()) != null) {
> 197 	 super.removeConsumer(context, sub.getConsumerInfo());
> 198  } else {
> 199 	// try destroying inactive subscriptions
> 200 	destroySubscription(sub);
> 201  }
> {noformat}
> which should be (i think):
> {noformat}
> 196  if (subscriptions.get(sub.getConsumerInfo().getConsumerId()) != null) {
> 197 	 super.removeConsumer(context, sub.getConsumerInfo());
> 198  } else {
> 199 	// try destroying inactive subscriptions
> 200 	destroySubscription(sub);
> 201  }
> {noformat}
> Subscriptions are added to the map using the *{{getConsumerId()}}*, not the identity
of the ConsumerInfo object; elsewhere in the class; hence the suggestion for using *{{getConsumerId()}}*
> Hope that makes sense.
> cheers
> /dom

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

        

Mime
View raw message