Bug 472813 - txtest fails when journal is forced into external (flow-to-disk) mode
txtest fails when journal is forced into external (flow-to-disk) mode
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp (Show other bugs)
All Linux
high Severity high
: 1.1
: ---
Assigned To: Kim van der Riet
Kim van der Riet
: 472210 (view as bug list)
Depends On:
  Show dependency treegraph
Reported: 2008-11-24 14:50 EST by Kim van der Riet
Modified: 2009-02-04 10:36 EST (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2009-02-04 10:36:46 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Kim van der Riet 2008-11-24 14:50:42 EST
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)
Comment 1 Kim van der Riet 2008-11-24 14:55:25 EST
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.
Comment 2 Kim van der Riet 2008-11-24 14:57:15 EST
Fixed in r.2874.

QA: The error above should be readily reproducible using the method above when checked against any revision < 2874.
Comment 3 Kim van der Riet 2008-11-24 14:58:28 EST
*** Bug 472210 has been marked as a duplicate of this bug. ***
Comment 5 Frantisek Reznicek 2008-12-04 07:25:34 EST
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

Comment 7 errata-xmlrpc 2009-02-04 10:36:46 EST
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.


Note You need to log in before you can comment on or make changes to this bug.