Bug 673152

Summary: JMS client producer option -Dsync_publish=persistent has no effect
Product: Red Hat Enterprise MRG Reporter: Kim van der Riet <kim.vdriet>
Component: qpid-javaAssignee: messaging-bugs <messaging-bugs>
Status: CLOSED CURRENTRELEASE QA Contact: MRG Quality Engineering <mrgqe-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: DevelopmentCC: jross, rattapat+nobody, rruban
Target Milestone: 2.0   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: 0.10 Doc Type: Bug Fix
Doc Text:
Cause: The JVM option -Dsync_publish has no effect. Consequence: A user is unable to configure the client to send messages synchronously. However for durable messaging a user could still use the deprecated option -Dsync_persistence=true to work around this. Still it has no way of specifying synchronous publish for transient messages. Fix: The JMS client is now able to send messages synchronously. The sync_publish option takes one of {transient,persistent,all,''}. Where '' represents none. The default is set to '', where all messages are sent asynchronously. Result: Depending on the value of sync_publish one of the following will happen, 1. Default Behaviour - all messages are sent asynchronously. 2. persistent - Only persistent messages are sent synchronously. 3. transient - Only transient messages are sent synchronously. 4. all - all messages are sent synchronously.
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-24 16:41:37 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Kim van der Riet 2011-01-27 14:57:10 UTC
The JMS client has options -Dsync_persistence=true|false (which has been deprecated, and its replacement -Dsync_publish=persistent|all. Using a store with prints out its operations:

1E:  = store enqueue
1F   = store flush operation
1Wcb = store write callback (completion of async disk write)

the first (obsolete) operation works as expected:

... 1E: 1F 1Wcb 1E: 1F 1Wcb 1E: 1F 1Wcb ...

while the latter option is ignored:

... 1E: 1E: 1E: 1E: 1E: 1E: 1E: ...

Comment 1 Rajith Attapattu 2011-03-14 21:30:35 UTC
Fixed in upstream at http://svn.apache.org/viewvc?view=rev&rev=1069998
The fixes are now included in rpms from version qpid-java-0.9.1080013-2

Comment 2 Rajith Attapattu 2011-03-14 21:30:35 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
Cause: The JVM option -Dsync_publish has no effect.

Consequence:  A user is unable to configure the client to send messages synchronously. However for durable messaging a user could still use the deprecated option -Dsync_persistence=true to work around this. Still it has no way of specifying synchronous publish for transient messages.


Fix:          The JMS client is now able to send messages synchronously. The sync_publish option takes one of {transient,persistent,all,''}. Where '' represents none.
The default is set to '', where all messages are sent asynchronously.

Result:       Depending on the value of sync_publish one of the following will happen,

1. Default Behaviour - all messages are sent asynchronously.

2. persistent - Only persistent messages are sent synchronously.

3. transient - Only transient messages are sent synchronously.

4. all - all messages are sent synchronously.