Bug 1049870

Summary: Broker recovers auto-delete queues and discards their auto-delete bit
Product: Red Hat Enterprise MRG Reporter: Zdenek Kraus <zkraus>
Component: qpid-cppAssignee: Pavel Moravec <pmoravec>
Status: CLOSED ERRATA QA Contact: Zdenek Kraus <zkraus>
Severity: medium Docs Contact:
Priority: medium    
Version: DevelopmentCC: esammons, iboverma, jross, pmoravec
Target Milestone: 3.1   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qpid-cpp-0.30-2 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-04-14 13:47: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 2014-01-08 11:52:13 UTC
Description of problem:
When the durable node with auto-delete: true exists, the property is reset to false after broker restarts, with linearstore.

Version-Release number of selected component (if applicable):
qpid-cpp-server-linearstore-0.22-30.el6.x86_64


How reproducible:
100%

Steps to Reproduce:
1. create durable node (queue) with auto-delete property set
./spout "autodelq;{'create':'always', 'node': {'x-declare': {'auto-delete': True}}}"

2. create durable node (exchange) with auto-delete property set
 ./spout "autodelex;{'create':'always', 'node': {'type': topic, 'x-declare': {'auto-delete': True}, 'durable':True}}"

3. check auto-delete
qpid-stat -q #for queue
# or
qmf2_list_objects --query-data queue/autodelq | ipython

qmf2_list_objects --query-data exchange/autodelex | ipython

4. restart broker
5. check auto-delete 


Actual results:
[3]

$ qpid-stat -q
Queues
  queue                                                        dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut  cons  bind
  ============================================================================================================================================
  00bf8b02-ca89-476b-bec6-ed6fa4b2034e:0.0                          Y        Y        0     0      0       0      0        0         1     2
  autodelq                                                          Y                 1     1      0      97     97        0         0     1

$ qmf2_list_objects --query-data queue/autodelq | ipython
{'_create_ts': 1389181379536877552,
 '_delete_ts': 0,
 '_object_id': {'_object_name': 'org.apache.qpid.broker:queue:autodelq'},
 '_schema_id': {'_class_name': 'queue',
                '_hash': 'aee19387-3611-855a-c8ff-d2f106e5b5f4',
                '_package_name': 'org.apache.qpid.broker',
                '_type': '_data'},
 '_update_ts': 1389181380906385452,
 'acquires': 0,
 'arguments': {},
 'autoDelete': True,
 'bindingCount': 1,
 'bindingCountHigh': 1,
 'bindingCountLow': 1,
 'byteDepth': 0,
 'byteFtdDepth': 0,
 'byteFtdDequeues': 0,
 'byteFtdEnqueues': 0,
 'bytePersistDequeues': 0,
 'bytePersistEnqueues': 0,
 'byteTotalDequeues': 0,
 'byteTotalEnqueues': 0,
 'byteTxnDequeues': 0,
 'byteTxnEnqueues': 0,
 'consumerCount': 0,
 'consumerCountHigh': 0,
 'consumerCountLow': 0,
 'discardsLvq': 0,
 'discardsOverflow': 0,
 'discardsPurge': 0,
 'discardsRing': 0,
 'discardsSubscriber': 0,
 'discardsTtl': 0,
 'durable': True,
 'exclusive': False,
 'flowStopped': False,
 'flowStoppedCount': 0,
 'messageLatencyAvg': 0,
 'messageLatencyCount': 0,
 'messageLatencyMax': 0,
 'messageLatencyMin': 0,
 'msgDepth': 0,
 'msgFtdDepth': 0,
 'msgFtdDequeues': 0,
 'msgFtdEnqueues': 0,
 'msgPersistDequeues': 0,
 'msgPersistEnqueues': 0,
 'msgTotalDequeues': 0,
 'msgTotalEnqueues': 0,
 'msgTxnDequeues': 0,
 'msgTxnEnqueues': 0,
 'name': 'autodelq',
 'redirectPeer': None,
 'redirectSource': False,
 'releases': 0,
 'reroutes': 0,
 'unackedMessages': 0,
 'unackedMessagesHigh': 0,
 'unackedMessagesLow': 0,
 'vhostRef': {'_object_name': 'org.apache.qpid.broker:vhost:org.apache.qpid.broker:broker:amqp-broker,/'}}

$ qmf2_list_objects --query-data exchange/autodelex | ipython
{'_create_ts': 1389181379537815896,
 '_delete_ts': 0,
 '_object_id': {'_object_name': 'org.apache.qpid.broker:exchange:autodelex'},
 '_schema_id': {'_class_name': 'exchange',
                '_hash': 'c9bb43df-44ac-63d5-cc1c-6a032025c97d',
                '_package_name': 'org.apache.qpid.broker',
                '_type': '_data'},
 '_update_ts': 1389181380907750214,
 'arguments': {},
 'autoDelete': True,
 'bindingCount': 0,
 'bindingCountHigh': 0,
 'bindingCountLow': 0,
 'byteDrops': 0,
 'byteReceives': 0,
 'byteRoutes': 0,
 'durable': True,
 'msgDrops': 0,
 'msgReceives': 0,
 'msgRoutes': 0,
 'name': 'autodelex',
 'producerCount': 0,
 'producerCountHigh': 0,
 'producerCountLow': 0,
 'type': 'topic',
 'vhostRef': {'_object_name': 'org.apache.qpid.broker:vhost:org.apache.qpid.broker:broker:amqp-broker,/'}}



[5]
'autoDelete': False is on both nodes


Expected results:
autoDelete property should survive the restart

Additional info:

Comment 3 Pavel Moravec 2014-06-18 13:53:02 UTC
Just a note for testers: there is a typo in 1st step, it lacks durable:true option :)

Steps to Reproduce:
1. create durable node (queue) with auto-delete property set
./spout "autodelq;{'create':'always', 'node': {'durable':'True', 'x-declare': {'auto-delete': True}}}"

Comment 4 Pavel Moravec 2014-06-20 12:57:29 UTC
Upstream JIRA with patch proposal sent to review: https://reviews.apache.org/r/22812/

Comment 5 Pavel Moravec 2014-06-21 20:50:04 UTC
Committed revision 1604455.

Comment 7 Zdenek Kraus 2015-01-06 11:24:14 UTC
This was tested on RHEL 6.6 i686 and x86_64 with following packages:
python-qpid-0.30-2
qpid-cpp-client-0.30-4
qpid-cpp-client-devel-0.30-4
qpid-cpp-client-rdma-0.30-4
qpid-cpp-debuginfo-0.30-4
qpid-cpp-server-0.30-4
qpid-cpp-server-devel-0.30-4
qpid-cpp-server-ha-0.30-4
qpid-cpp-server-linearstore-0.30-4
qpid-cpp-server-rdma-0.30-4
qpid-cpp-server-xml-0.30-4
qpid-java-client-0.30-3
qpid-java-common-0.30-3
qpid-java-example-0.30-3
qpid-jca-0.22-2
qpid-jca-xarecovery-0.22-2
qpid-proton-c-0.7-4

Fix works as expected.
->VERIFIED

Comment 9 errata-xmlrpc 2015-04-14 13:47:19 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHEA-2015-0805.html