test_stat17 tree-walk correction check still flakes on small trees

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • WT12.0.0, 9.1.0-rc0
    • Affects Version/s: None
    • Component/s: Btree
    • None

      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.

            Assignee:
            Chenhao Qu
            Reporter:
            Chenhao Qu
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: