test(coverage): run recd group in COV_RECD block (hash_rec 0->24%, qam_rec 0->46%, bt_rec 12->22% branch) - #89
Merged
Conversation
The per-operation recovery handlers (__xxx_recover: redo/undo/abort/ do-nothing branches) in db/db_rec.c (3189 br), hash/hash_rec.c (2069), btree/bt_rec.c (2366) and qam/qam_rec.c (574) were the biggest cold BRANCH surface. The subset ran only recd001/002/016 on btree, leaving the hash and queue handlers at 0% and most btree/db redo/undo branches cold. Add a COV_RECD block (default on) that drives the recd group driver-per-test (each in its own tclsh, per-test timeout, recdscript.tcl orphan cleanup) -- recd tests use conflicting globals (recd006 kvals scalar vs recd010 array) so they cannot share one interpreter. The set is curated for coverage-per-minute across every access method each test supports; whole block ~10 min, every test PASSes well inside a 300s timeout. Recd-driven branch % (measured, gcc --coverage, -O0): db/db_rec.c 14.6 -> 16.4 btree/bt_rec.c 12.3 -> 21.6 hash/hash_rec.c 0 -> 24.2 qam/qam_rec.c 0 -> 45.5 recd001/002/016 removed from COV_TESTS (superseded by the driver-per-test block; recd001 was 6.5 min and added ~1 branch over the rest). recd003/ 007/015 deliberately excluded: too slow under -O0 for the marginal branches they add (recd003 does not unlock the still-cold __bam_root/ irep/rcuradj or __db_ovref handlers). No recovery-correctness bug surfaced: all forward+backward replays verified clean.
Coccinelle convention checksNo new violations. ✅ Resolved since baseline (2) -- update dist/cocci/baseline.txt to lock these in. |
ABI diff vs
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wires the
recdrecovery-record test group into a new COV_RECD block (driver-per-test, 300s timeout, orphan cleanup) — the biggest remaining recover-handler branch gap.Branch % before → after (recd-driven, gcc --coverage -O0)
Biggest wins: hash + queue recover handlers were 0% (no hash/queue recd ran in the old subset).
Tests wired (26 runs, curated for coverage-per-minute)
recd002/005 × btree/hash/queue/recno; recd006/013 × btree/hash; recd004/008/009/010/014(queueext — only path to
__qam_delext_recover)/016/017/018/019/020/022/023/024/025 × btree. All 26 PASS, ~10 min block. Removedrecd001/002/016fromCOV_TESTS(superseded by the driver-per-test block, which also dodges akvalsglobal-collision that broke recd006+recd010 in a shared tclsh).Skipped (too-slow-for-marginal-gain under -O0)
recd001 (~6.5min), recd003 (~7.3min), recd015 (~4.6min), recd007 (~4.3min) — each adds ~0-1 branches over the wired set.
No bugs — all forward+backward recovery replays verified clean across every access method. Follow-up (in PR): the still-cold
__bam_root/irep/rcuradj+__db_ovref/cksumhandlers need a targeted C recovery driver.