Messages that have been delivered to a transactional session are not automatically released on rollback. Need to think through how we want to support this.
This should be addressed in any high level client API design: https://bugzilla.redhat.com/show_bug.cgi?id=430491
This has been addressed in the new higher level messaging api (qpid::messaging::Session). It can be demonstrated using qpid_recv: 1. put some messages on a queue 2. using the new api (e.g. qpid_recv using the --rollback-frequency and --tx options) receive messages from that queue on a transactional session and rollback (either each individual message or in batches). 3. The same message(s) should be received over and over.
I've tested it on RHEL 5.5/4.8 x i386/x86_64 with $ qpid-config add queue test_q $ echo "test" | ./qpid_send --content-stdin -b amqp:tcp:127.0.0.1 -a test_q --ttl 100000000 $ ./qpid_receive --rollback-frequency 1 --tx 1 -b amqp:tcp:127.0.0.1 -a test_q and with packages: qpid-cpp-server-0.7.946106-17 qpid-tools-0.7.946106-11 qpid-cpp-mrg-debuginfo-0.7.946106-17 qpid-cpp-client-0.7.946106-17 and it works. --> VERIFIED
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: Messages that have been delivered to a transactional session are not automatically released on rollback. Consequence: Messages are lost that should be received again after rollback. Fix: Addressed by new high-level API. Result: When a transaction is rolled back its messages are released and are received again.
Technical note updated. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. Diffed Contents: @@ -1,11 +1 @@ -Cause: +Messages that were delivered to a transactional session were not automatically released on a rollback. This caused the messages to be lost instead of being received again after the rollback. With this update, a new high-level API addresses this issue; when a transaction is rolled back, its messages are released and received again.- Messages that have been delivered to a transactional session are not automatically released on rollback. - - Consequence: - Messages are lost that should be received again after rollback. - - Fix: - Addressed by new high-level API. - - Result: - When a transaction is rolled back its messages are released and are received again.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2010-0773.html