Bug 460346

Summary: jexception 0x0406 nlfh::add_rd_subm_cnt_dblks() threw JERR_NFLH_RDOFFSOVFL: Attempted increase read offset past write offset. (_rd_subm_cnt_dblks=0 incr=4 _wr_subm_cnt_dblks=0) (BdbMessageStore.cpp:840)
Product: Red Hat Enterprise MRG Reporter: Gordon Sim <gsim>
Component: qpid-cppAssignee: Kim van der Riet <kim.vdriet>
Status: CLOSED NEXTRELEASE QA Contact: Kim van der Riet <kim.vdriet>
Severity: high Docs Contact:
Priority: urgent    
Version: 1.0   
Target Milestone: 1.0.2   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-01-08 18:14:17 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:
Attachments:
Description Flags
journal files from failure scenario none

Description Gordon Sim 2008-08-27 17:40:13 UTC
Running the java QueueBrowserAutoAckTest in a loop (in no-prefetch mode as it happens, not sure if thats relevant) I eventually hit an error on recovery:

2008-aug-27 18:01:25 info Loaded Module: /home/gordon/work/bdbstore/cpp-1.0.1/lib/.libs/libbdbstore.so
2008-aug-27 18:01:25 info Management enabled
2008-aug-27 18:01:25 debug ManagementBroker restored broker ID: acd2d78e-3e22-43ef-b489-cee6ecd277af
2008-aug-27 18:01:25 debug ManagementBroker boot sequence: 132
2008-aug-27 18:01:25 debug ManagementBroker added package qpid
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.system
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.broker
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.agent
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.vhost
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.queue
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.exchange
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.binding
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.connection
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.link
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.bridge
2008-aug-27 18:01:25 debug ManagementBroker added class qpid.session
2008-aug-27 18:01:25 notice Journal "TplStore": Instantiation
2008-aug-27 18:01:25 debug Journal "TplStore": Journal directory = "/home/gordon/qpid/branches/qpid.0-10/java/build/data/rhm/tpl/"; Base file name = "tpl"
2008-aug-27 18:01:25 info BdbMessageStore module initialized: Journal dir: /home/gordon/qpid/branches/qpid.0-10/java/build/data; Default files per journal: 8; Default jrournal file size: 24(wpgs); Default write cache page size: 32(Kib)
2008-aug-27 18:01:25 debug Configured queue with no-local=0
2008-aug-27 18:01:25 debug Configured queue example.queue with qpid.trace.id='' and qpid.trace.exclude='' i.e. 0 elements
2008-aug-27 18:01:25 notice Journal "example.queue": Instantiation
2008-aug-27 18:01:25 debug Journal "example.queue": Journal directory = "/home/gordon/qpid/branches/qpid.0-10/java/build/data/rhm/jrnl/0009/example.queue/"; Base file name = "JournalData"
2008-aug-27 18:01:25 debug Journal "example.queue": Recover; num_jfiles=8 jfsize_sblks=3072 queue_id = 0x2 wcache_pgsize_sblks=64 wcache_num_pages=32
2008-aug-27 18:01:26 debug Journal "example.queue": Recover file analysis (jid="example.queue"): owi=FALSE frot=TRUE empty=FALSE ffid=0 fro=0x200 (4 dblks) lfid=0 eo=0x180200 (12292 dblks) h_rid=0x1f7c full=FALSE Enqueued records (txn & non-txn): [ fid_00=0 fid_01=0 fid_02=0 fid_03=0 fid_04=0 fid_05=0 fid_06=0 fid_07=0 ]
2008-aug-27 18:01:26 debug Journal "example.queue": Recover phase 1 complete; highest rid found = 0x1f7c; emap.size=0; tmap.size=0; journal now read-only.
2008-aug-27 18:01:26 debug Exception constructed: Queue example.queue: recoverMessages() failed: jexception 0x0406 nlfh::add_rd_subm_cnt_dblks() threw JERR_NFLH_RDOFFSOVFL: Attempted increase read offset past write offset. (_rd_subm_cnt_dblks=0 incr=4 _wr_subm_cnt_dblks=0) (BdbMessageStore.cpp:840)
2008-aug-27 18:01:26 debug Journal "example.queue": Destroyed
Queue example.queue: recoverMessages() failed: jexception 0x0406 nlfh::add_rd_subm_cnt_dblks() threw JERR_NFLH_RDOFFSOVFL: Attempted increase read offset past write offset. (_rd_subm_cnt_dblks=0 incr=4 _wr_subm_cnt_dblks=0) (BdbMessageStore.cpp:840)
~XYZ()

Comment 1 Gordon Sim 2008-08-28 18:02:16 UTC
Created attachment 315270 [details]
journal files from failure scenario

Comment 2 Kim van der Riet 2008-09-12 14:49:20 UTC
This was a case of non-tx recovery from a journal whose last record exactly coincided with eof and has no outstanding enqueued records (ie nothing to read). Fixed by adjusting initialization parameters for this case.

r.2458 on 1.0 branch
r.2459 on trunk