If the broker is forced into extern mode (in which all messages, both transient and durable) are stored in BDB rather than the journal itself, then txtest fails because of a broker exception. Method: start broker using: ./qpidd --load-module /home/kpvdr/mrg/store.ref/cpp/lib/.libs/msgstore.so --data-dir /tmp --auth no --log-enable info+ --num-jfiles 8 --staging-threshold 25 and txtest in another window using: ./txtest --messages-per-tx 100 --tx-count 100000 --total-messages 10000 --size 64 --queues 4 Wait a few minutes (using extern makes the test run *very* slowly), and the broker will fail with an exception (most of the time): Queue tx-test-1: loadContent() failed: jexception 0x0000 JournalImpl::loadMsgContent() threw <Unknown error code> (read_data_record() was unable to find rid 7376; last rid found was 24735) (MessageStoreImpl.cpp:1261)
This seems to occur because txtest causes transactional writes to occur out of rid order, and when the read pipeline attempts to read these records, it jumps over interim records to do so. However, when these out-of-order records are finally read, the read pointer has passed the record and fails with this message (indicating that we are attempting to read an rid lower than the last one we successfully read). This is a logic error, and the read pipeline needs to be able to handle out-of-order rids.
Fixed in r.2874. QA: The error above should be readily reproducible using the method above when checked against any revision < 2874.
*** Bug 472210 has been marked as a duplicate of this bug. ***
Issue has been fixed. Validated on RHEL 4.7 / 5.2, i386 / x86_64 on packages: qpidd-0.3.722891-2.el5, rhm-0.3.2913-1.el5 vs. 719671/2804 ->VERIFIED
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/RHEA-2009-0035.html