Bug 448102

Summary: c++ broker sync() implementation incorrect with async store.
Product: Red Hat Enterprise MRG Reporter: Alan Conway <aconway>
Component: qpid-cppAssignee: Gordon Sim <gsim>
Status: CLOSED NOTABUG QA Contact: Kim van der Riet <kim.vdriet>
Severity: urgent Docs Contact:
Priority: urgent    
Version: betaCC: rafaels
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: 2008-05-28 16:04:29 UTC 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 Alan Conway 2008-05-23 14:07:37 UTC
Description of problem:

On receiving a sync() command, the broker responds immediately. It does not wait
for async message enqueues to complete. This could give incorrect sync results
when used with the async store, causing hard-to-find intermittent bugs.

Summary of code changes:

 - Generalize IncompleteMessageList on SessionState to an incomplete command
list that can include both message enqueus and syncs.

 - Update subsequent pending syncs during message completion.

 - Send sync when all preceding async messages have completed.

Comment 1 Gordon Sim 2008-05-28 16:04:29 UTC
Current code actually already does what is required; on receiving a sync() the
broker will indeed wait until all outstanding enqueues are complete before
responding.