llmeta: reset the resume key once a resumable scan finishes - #6215
markhannum wants to merge 1 commit into
Conversation
roborivers
left a comment
There was a problem hiding this comment.
Cbuild submission: Success ✓.
Regression testing: Success ✓.
The first 10 failing tests are:
sc_truncate [db unavailable at finish]
consumer_non_atomic_default_consumer_generated **quarantined**
sc_downgrade [timeout] **quarantined**
reco-ddlk-sql [timeout] **quarantined**
tsa [timeout]
4bdc7fd to
c4589bc
Compare
A completed scan left the next foreign-prefix key in *resume, so the purge thread's next pass after a master change tripped the prefix assert. Signed-off-by: Mark Hannum <mhannum@bloomberg.net>
c4589bc to
d218c8b
Compare
roborivers
left a comment
There was a problem hiding this comment.
Cbuild submission: Error ⚠.
Regression testing: Success ✓.
The first 10 failing tests are:
consumer_non_atomic_default_consumer_generated **quarantined**
bind_query_plan
sc_downgrade [timeout] **quarantined**
roborivers
left a comment
There was a problem hiding this comment.
Cbuild submission: Success ✓.
Regression testing: Success ✓.
The first 10 failing tests are:
reco-ddlk-sql **quarantined**
consumer_non_atomic_default_consumer_generated **quarantined**
sc_downgrade [timeout] **quarantined**
truncatesc_offline_generated [timeout] **quarantined**
bdb_process_each_entry_resumable scans llmeta straight into the caller's resume buffer, so a scan that walks off the end of its prefix leaves the next file_type's key in *resume. Nothing clears it, and the purge thread's next pass after a master change trips the prefix assert (llmeta.c:10519, seen as a core in phys_rep_tiered); a release build would instead silently stop purging old files.
Keep the resume key only when the callback stops early, don't copy an unfetched key into it, and free it once the scan finishes or fails.