Bug 509994

Summary: browsed, cluster durable lvq loses order between persistent and transient messages
Product: Red Hat Enterprise MRG Reporter: Gordon Sim <gsim>
Component: qpid-cppAssignee: messaging-bugs <messaging-bugs>
Status: NEW --- QA Contact: MRG Quality Engineering <mrgqe-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 1.1.1   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
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:

Description Gordon Sim 2009-07-07 10:22:15 UTC
Description of problem:

If due to a browsing subscriber, more than one message exists on queue for a given key and the later message was sent as persistent while the earlier message was sent as transient, then if cluster durability is triggered, and the resulting store used for recovery the newer message will be replaced by the older message.

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

qpidd-0.5.752581-22.el5

How reproducible:

100%

Steps to Reproduce:
1. start two node cluster
2. create cluster durable lvq
   e.g.  qpid-config add queue test-queue --order lvq --durable --cluster-durable
3. send transient message to the queue
   e.g. echo one | sender --lvq-match-value abc
4. browse the queue (prevents replacement of the previous message)
   e.g. receiver --browse --messages 1
5. send a durable message with same key
   e.g. echo two | sender --lvq-match-value abc --durable true
6. kill one node to trigger cluster-durable feature
7. stop and recover the remaining node
  
Actual results:

After recovery, only the older message remains on the queue (i.e. one). The newer message has been incorrectly overridden.

Expected results:

Always have the latest message on the queue.

Additional info: