-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Btree
-
None
-
Storage Engines - Transactions
-
258.217
-
SE Transactions - 2026-08-28
-
1
-
4
test_stat17.test_correction_persists_in_memory failed again:
FAIL: test_stat17.test_stat17.test_correction_persists_in_memory
File "test/suite/test_stat17.py", line 181, in test_correction_persists_in_memory
self.assertAlmostEqual(fast_pages, exact_pages, delta=max_pages_drift,
AssertionError: 83 != 80 within 2 delta (3 difference) : fast read after tree-walk correction should be near 80, got 83
This is the same flake as WT-17878, which replaced a strict equality check with assertAlmostEqual(delta=max(2, exact_pages // 50)). That tolerance is still too tight: on an 80-page tree the delta evaluates to the floor of 2, and the test's own comment already predicts that eviction splits concurrent with the tree walk will legitimately bump btree_row_leaf_pages after the walk's snapshot is taken. Three such splits are enough to fail it.
The stat is approximate by contract and the drift here is one-sided - splits only add pages, they never remove them - so a symmetric delta with a small floor is the wrong shape of assertion. The check should assert direction instead: the fast read must not fall below the corrected value (that is the property a regression in the correction path would break), with a loose upper bound to keep it in the neighbourhood.
No product defect: the correction path is working, the fast read reflects it plus post-snapshot splits.
- is related to
-
WT-17878 unit-test-extra-long: test_stat17 failed on rhel80
-
- Closed
-