Bug 806279

Summary: TestOnly: exclusive auto-del queues are not remove after defined timeout in cluster
Product: Red Hat Enterprise MRG Reporter: Petr Matousek <pematous>
Component: qpid-cppAssignee: messaging-bugs <messaging-bugs>
Status: CLOSED CURRENTRELEASE QA Contact: Petr Matousek <pematous>
Severity: high Docs Contact:
Priority: unspecified    
Version: 2.1.2CC: jross, kgiusti
Target Milestone: ---Keywords: TestOnly
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 800028    
Bug Blocks:    

Description Petr Matousek 2012-03-23 11:31:06 UTC
Description of problem:
By defining more than one queue to be exclusive auto-delete with defined timeout for auto deletion, only the firstly defined queue is removed after defined timeout, all other queues remain present on the broker.

I've retested this issue on 0.14-14.el5, the issue seems to be fixed. It seems that the fix for Bug 800028 covers this issue as well. So only a retest shall be needed when the new packages for rhel6 will be available.

Version-Release number of selected component (if applicable):
qpid-0.14-10

How reproducible:
100%

Steps to Reproduce:
1. set-up clustered broker
2. spout "my-queue_1; {create: sender, node:{x-declare:{exclusive:True, auto-delete:True, arguments:{'qpid.auto_delete_timeout':10}}}}"
3. spout "my-queue_1; {create: sender, node:{x-declare:{exclusive:True, auto-delete:True, arguments:{'qpid.auto_delete_timeout':10}}}}"
4. qpid-config queues
5. sleep 11
6. qpid-config queues
7. only my-queue_1 is removed, all other queues remain present even if exclusive and auto-del was set on them.

Actual results:
auto-del queues are not removed after defined timeout in cluster

Expected results:
all queues with auto-del are properly removed after defined timeout in cluster

Additional info:

Comment 2 Petr Matousek 2012-03-23 11:39:04 UTC
Ken, please can you double check that the patch for Bug 800028 covers this issue as well.

Comment 3 Petr Matousek 2012-03-26 09:24:56 UTC
(In reply to comment #0)
a small correction, different name has to be provided while creating the second queue:

> Steps to Reproduce:
> 3. spout "my-queue_1; {create: sender, node:{x-declare:{exclusive:True,
> auto-delete:True, arguments:{'qpid.auto_delete_timeout':10}}}}"

s/my-queue_1/my-queue_2/

Comment 4 Petr Matousek 2012-03-26 09:31:33 UTC
This issue has been fixed for rhel5, verified on rhel5.8 i386 & x86_64 - qpid-cpp-mrg-0.14-14.el5.

rhel6 version suffers with the same issue reported in Bug 800028, Comment 8 - Waiting for rhel6 packages for retest.

Comment 5 Ken Giusti 2012-03-26 14:26:36 UTC
Confirmed that the fix for Bug 800028 will also address this issue.

The reason for the failure is that when the queues are created, all queues use the same name for the expiration timer.

This causes the cluster to reject adding all timers save the first.  The following log message is issued when adding timers for additional queues:

2012-03-26 10:21:40 error Task already exists with name DelayedAutoDeletion (../../../qpid/cpp/src/qpid/cluster/ClusterTimer.cpp:72)

The fix for Bug 800028 fixes this problem also by creating a unique name for each timer (by incorporating the name of the corresponding queue).

Comment 6 Petr Matousek 2012-03-30 11:38:29 UTC
Issue fixed, tested on rhel5.8 / 6.2 i/x on packages:
qpid-cpp-mrg-0.14-14.el5
qpid-cpp-0.14-14.el6_2

-> VERIFIED