qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robbie Gemmell (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (QPIDJMS-346) No Exception thrown when unsubscribing from a shared durable subscription with active consumer
Date Mon, 11 Dec 2017 16:06:00 GMT

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

Robbie Gemmell resolved QPIDJMS-346.
------------------------------------
    Resolution: Fixed

> No Exception thrown when unsubscribing from a shared durable subscription with active
consumer
> ----------------------------------------------------------------------------------------------
>
>                 Key: QPIDJMS-346
>                 URL: https://issues.apache.org/jira/browse/QPIDJMS-346
>             Project: Qpid JMS
>          Issue Type: Bug
>          Components: qpid-jms-client
>    Affects Versions: 0.27.0
>            Reporter: Rob Godfrey
>             Fix For: 0.27.0
>
>
> Testing the shared durable subscription functionality against Qpid Broker-J I found that
if I attempted to unsubscribe a shared durable subscription from client A, while still having
an active consumer from client B, then no exception was thrown in client A.
> The protocol trace from the client A is as follows:
> {noformat}
> [362461018:0] -> Attach{name='myDurableSub|global', handle=0, role=RECEIVER, sndSettleMode=UNSETTLED,
rcvSettleMode=FIRST, source=null, target=Target{address='null', durable=NONE, expiryPolicy=SESSION_END,
timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}, unsettled=null,
incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, offeredCapabilities=null,
desiredCapabilities=[shared, global], properties=null}
> [362461018:0] <- Attach{name='myDurableSub|global', handle=0, role=SENDER, sndSettleMode=UNSETTLED,
rcvSettleMode=FIRST, source=Source{address='topic', durable=CONFIGURATION, expiryPolicy=NEVER,
timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=copy, filter=null,
defaultOutcome=Modified{deliveryFailed=true, undeliverableHere=null, messageAnnotations=null},
outcomes=[amqp:accepted:list, amqp:released:list, amqp:rejected:list], capabilities=[global,
shared, topic]}, target=Target{address='null', durable=NONE, expiryPolicy=SESSION_END, timeout=0,
dynamic=false, dynamicNodeProperties=null, capabilities=null}, unsettled={}, incompleteUnsettled=false,
initialDeliveryCount=0, maxMessageSize=null, offeredCapabilities=[SHARED-SUBS], desiredCapabilities=null,
properties={}}
> [362461018:0] -> Detach{handle=0, closed=true, error=null}
> [362461018:0] <- Detach{handle=0, closed=true, error=Error{condition=amqp:resource-locked,
description='There are consumers on Queue 'qpidsub_/_global__/myDurableSub_/durable'', info=null}}
> [362461018:0] -> Close{error=null}
> [362461018:0] <- Close{error=null}
> {noformat}
> While the broker is sending back a detach with closed=true (which is essentially accurate)
it is also providing an error.  The JMS API docs have this to say:
> {quote}
> It is erroneous for a client to delete a durable subscription while there is an active
(not closed) consumer for the subscription, or while a consumed message is part of a pending
transaction or has not been acknowledged in the session.
> {quote}
> So I presume we should be triggering off the fact that the broker sent detach contains
an error to throw an appropriate JMSException



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message