Bug 1025381

Summary: exclusivity requirement on existing queue allows more than one receiver
Product: Red Hat Enterprise MRG Reporter: Zdenek Kraus <zkraus>
Component: qpid-cppAssignee: Gordon Sim <gsim>
Status: CLOSED CURRENTRELEASE QA Contact: Petr Matousek <pematous>
Severity: high Docs Contact:
Priority: high    
Version: 3.0CC: esammons, gsim, iboverma, jross, pematous
Target Milestone: 3.0Keywords: Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qpid-cpp-0.22-25.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-01-21 12:52:19 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Zdenek Kraus 2013-10-31 15:02:50 UTC
Description of problem:
On existing queue, when some receiver is still subscribed and new receiver requires exclusivity, both receivers are allowed to receive, without warning.

Version-Release number of selected component (if applicable):
qpid-cpp-server-0.22-23

How reproducible:
100%

Steps to Reproduce:
1. service qpidd start
2. ./drain -f "q;{create:always}"
3. ./drain -f "q;{create:always, node:{x-declare:{exclusive:true}}}"

4. qpid-config queues
5. ./spout -c 10 "q"


Actual results:
Queue Name                                Attributes
=================================================================
6f798b03-43d9-4107-841c-7b966c9e640e:0.0  auto-del excl 
q                                         excl 

drain 1
Message(properties={spout-id:2f00d673-7c04-430c-91c6-77ed1a3880b1:0, x-amqp-0-10.routing-key:q}, content='')
Message(properties={spout-id:fac137c3-9b52-4058-9d27-53834ccb7a30:2, x-amqp-0-10.routing-key:q}, content='')
Message(properties={spout-id:8784d5da-11ed-49dc-ab2a-300a8f122286:4, x-amqp-0-10.routing-key:q}, content='')
Message(properties={spout-id:05046b70-abbd-4167-8cf4-a9546ad0b46d:7, x-amqp-0-10.routing-key:q}, content='')
Message(properties={spout-id:e354f138-c118-47fa-b4c0-6366bab268b3:8, x-amqp-0-10.routing-key:q}, content='')

drain 2
Message(properties={spout-id:34f66e59-3158-4f72-9503-1e378eadf59e:1, x-amqp-0-10.routing-key:q}, content='')
Message(properties={spout-id:1003442d-be34-4b0c-a181-12adbd269e58:3, x-amqp-0-10.routing-key:q}, content='')
Message(properties={spout-id:4bdedea7-5c03-47b4-82e2-6db6fa90b339:5, x-amqp-0-10.routing-key:q}, content='')
Message(properties={spout-id:842955dd-a0ed-4c83-9059-09135060e799:6, x-amqp-0-10.routing-key:q}, content='')
Message(properties={spout-id:441d5dbf-f290-4751-b15f-6ba374085adc:9, x-amqp-0-10.routing-key:q}, content='')

Expected results:
1/ non-exclusive drain is kicked
OR
2/ exclusive drain gets an exception

Additional info:
this behavior was not present at 2.3, because exclusivity was not able to be required afterwards.

Comment 2 Gordon Sim 2013-10-31 18:39:47 UTC
Fixed upstream: https://svn.apache.org/r1537579

Comment 3 Petr Matousek 2013-11-12 17:07:50 UTC
This issue has been fixed (tested both amqp0-10/1.0). 
Verified on rhel6.4 (i386, x86_64).

packages used for testing:
qpid-cpp-*-0.22-25.el6

-> VERIFIED