-
Type:
Improvement
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Statistics, Truncate
-
Storage Engines - Foundations, Storage Engines - Transactions
-
20.548
-
SE Transactions - 2026-10-23
-
1
Motivation
rec_page_delete_fast ("reconciliation: fast-path pages deleted") and rec_page_delete_fast_skip_deleted ("reconciliation: fast-path page deletion skipped, all entries already deleted") are incremented in _wti_delete_page (src/btree/bt_delete.c), which is reached only from the range-truncate tree walk (wt_cursor_truncate -> wt_btcur_next -> tree_walk_internal). Nothing in reconciliation touches them. The rec prefix and the "reconciliation:" description prefix therefore mislead readers of serverStatus / FTDC and of the source, where rec is otherwise the reconciliation abbreviation.
Raised during review of WT-18747 (PR #14858), which adds four cursor_truncate_* counters at the same site; the mismatch between rec_page_delete_fast and its neighbours becomes obvious there. The rename was kept out of that PR because of its blast radius (below).
Proposed change
Move both counters from RecStat to CursorStat in dist/stat_data.py, e.g.:
- rec_page_delete_fast -> cursor_truncate_fast_delete_pages ("range truncate fast-delete pages")
- rec_page_delete_fast_skip_deleted -> cursor_truncate_fast_delete_skip_deleted ("range truncate fast-delete skipped, all entries already deleted")
Regenerate with dist/s_all, update the two increments in bt_delete.c, and update the ~40 Python tests that read stat.conn.rec_page_delete_fast / stat.dsrc.rec_page_delete_fast (test_truncate*, test_checkpoint*, test_rollback_to_stable*, test_layered_fast_truncate*, test_disagg_fast_truncate*, test_compact12, test_instantiate01, test_bug035, test_layered_checkpoint_cleanup02).
Consider leaving rec_page_delete ("pages deleted") alone: it is incremented in reconciliation (rec_child.c) and is correctly named.
Compatibility
The description string is the key MongoDB exposes under serverStatus().wiredtiger.reconciliation and in FTDC. Renaming moves the metric to the cursor section and changes its name, so any T2 view, Atlas metric, or support playbook keyed on "reconciliation: fast-path pages deleted" must be updated in the same release. Check with the Server team / FTDC consumers before merging and note the rename in the release notes.
Definition of done
- Both statistics renamed and moved to CursorStat; s_all clean.
- All Python tests updated and passing.
- Downstream consumers of the old description string identified and notified.