Return-Path: X-Original-To: apmail-activemq-dev-archive@www.apache.org Delivered-To: apmail-activemq-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DFBB19BBB for ; Mon, 23 Jan 2012 22:34:05 +0000 (UTC) Received: (qmail 79374 invoked by uid 500); 23 Jan 2012 22:34:04 -0000 Delivered-To: apmail-activemq-dev-archive@activemq.apache.org Received: (qmail 78743 invoked by uid 500); 23 Jan 2012 22:34:04 -0000 Mailing-List: contact dev-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list dev@activemq.apache.org Received: (qmail 78480 invoked by uid 99); 23 Jan 2012 22:34:04 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 23 Jan 2012 22:34:04 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 23 Jan 2012 22:34:01 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 0CB9915E87A for ; Mon, 23 Jan 2012 22:33:40 +0000 (UTC) Date: Mon, 23 Jan 2012 22:33:40 +0000 (UTC) From: "Dominic Tootell (Updated) (JIRA)" To: dev@activemq.apache.org Message-ID: <1532560238.68795.1327358020054.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <8228889.64757.1327255119791.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Updated] (AMQ-3674) TopicRegion removes durableScriber from durableSubscriptions when it is active; but leaves subscription on Topic MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/AMQ-3674?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Dominic Tootell updated AMQ-3674: --------------------------------- Attachment: TopicRegion.AMQ-3674.patch.txt RemoveDurableSubscriptionTest.java > TopicRegion removes durableScriber from durableSubscriptions when it is active; but leaves subscription on Topic > ---------------------------------------------------------------------------------------------------------------- > > Key: AMQ-3674 > URL: https://issues.apache.org/jira/browse/AMQ-3674 > Project: ActiveMQ > Issue Type: Bug > Components: Broker > Affects Versions: 5.5.1 > Environment: 5.5.1 (5.5.1-fuse-01-20), Mac OS X 10.7.2 (11.2.0 Darwin Kernel Version 11.2.0) > Reporter: Dominic Tootell > Priority: Minor > Labels: Topic > Attachments: RemoveDurableSubscriptionTest.java, TopicRegion.AMQ-3674.patch.txt > > > http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicRegion.java?revision=1160894&view=markup > Via the Web Admin Console you can attempt to remove a durable topic subscription when it is active; however you will receive the message: "Durable consumer is in use". However, there is unfortunate side effect of this attempt in that the *{{durableSubscriptions}}* map is modified and the subscription is removed from the map, and the topic is left with subscription. If you subsequentially then disconnect the active durable topic consumer (so it's in an active state; where you and attempt to remove the subscription), you cannot remove the inactive subscription as you hit: "No durable subscription exists for:" > {noformat} > @Override > public void removeSubscription(ConnectionContext context, RemoveSubscriptionInfo info) throws Exception { > SubscriptionKey key = new SubscriptionKey(info.getClientId(), info.getSubscriptionName()); > DurableTopicSubscription sub = durableSubscriptions.remove(key); > if (sub == null) { > throw new InvalidDestinationException("No durable subscription exists for: " + info.getSubscriptionName()); > } > if (sub.isActive()) { > throw new JMSException("Durable consumer is in use"); > } > {noformat} > The above maybe should be changed to, where the subscription is *{{get}}* from the map, and only removed if it's !sub.isActive(). (Or perhaps re add the subscription to the map if it is Active) > {noformat} > @Override > public void removeSubscription(ConnectionContext context, RemoveSubscriptionInfo info) throws Exception { > SubscriptionKey key = new SubscriptionKey(info.getClientId(), info.getSubscriptionName()); > DurableTopicSubscription sub = durableSubscriptions.get(key); > if (sub == null) { > throw new InvalidDestinationException("No durable subscription exists for: " + info.getSubscriptionName()); > } > if (sub.isActive()) { > throw new JMSException("Durable consumer is in use"); > } > if(sub!=null) { > durableSubscriptions.remove(key); > } > {noformat} > let me know if that makes no sense; and i'll try to create you a sample unit test. > 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