disagg: test_cursor02, cursor05 fails iterating backwards

XMLWordPrintableJSON

    • Storage Engines, Storage Engines - Foundations
    • SE Foundations - 2025-09-12, SE Foundations - 2025-09-26
    • 5

      test_cursor02 is a simple test, appears to fail on backward iteration.  Two test functions fail:

      $ python ../test/suite/run.py -v 2 --hook disagg  test_cursor02.test_cursor02.test_iterate_one_added -s 0
      ...
      ======================================================================
      [pid:7045]: FAIL: Test iterating a table that contains one newly added entry (row)
      ----------------------------------------------------------------------
      [pid:7045]: Traceback (most recent call last):
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/wttest.py", line 243, in _callTestMethod
          method()
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor02.py", line 146, in test_iterate_one_added
          self.cur_check_backward(cursor, -1)
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor_tracker.py", line 395, in cur_check_backward
          self.cur_previous(cursor)
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor_tracker.py", line 410, in cur_previous
          self.check_cursor_ret(cursor.prev(), wantret)
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor_tracker.py", line 369, in check_cursor_ret
          self.fail('cursor returns NOTFOUND unexpectedly')
      AssertionError: cursor returns NOTFOUND unexpectedly
      
      
      $ python ../test/suite/run.py -v 2 --hook disagg  test_cursor02.test_cursor02.test_iterate_one_preexisting -s 0
      ....
      ======================================================================
      [pid:7088]: FAIL: Test iterating a table that contains one preexisting entry (row)
      ----------------------------------------------------------------------
      [pid:7088]: Traceback (most recent call last):
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/wttest.py", line 243, in _callTestMethod
          method()
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor02.py", line 132, in test_iterate_one_preexisting
          self.cur_check_backward(cursor, -1)
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor_tracker.py", line 395, in cur_check_backward
          self.cur_previous(cursor)
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor_tracker.py", line 410, in cur_previous
          self.check_cursor_ret(cursor.prev(), wantret)
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor_tracker.py", line 369, in check_cursor_ret
          self.fail('cursor returns NOTFOUND unexpectedly')
      AssertionError: cursor returns NOTFOUND unexpectedly

      Another test seems related to backward iteration, and should be fixed in the same ticket:

      python3 ../test/suite/run.py --hook disagg -v 2 test_cursor05 -s 3
      [pid:49659]: None ... [pid:49659]: test_cursor05.test_cursor05.test_cursor -s 3 (row.nonempty.no_colgroups): starting
      [pid:49659]:     Replacing, old uri = "table:main"
      [pid:49659]:     Replacing, new uri = "layered:main"
      [pid:49659]: test_cursor05.test_cursor05.test_cursor -s 3 (row.nonempty.no_colgroups): 1.06 seconds
      [pid:49659]: ERROR in test_cursor05.test_cursor05.test_cursor -s 3 (row.nonempty.no_colgroups)
      FAIL
      
      ======================================================================
      [pid:49659]: FAIL: None
      ----------------------------------------------------------------------
      [pid:49659]: Traceback (most recent call last):
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/wttest.py", line 243, in _callTestMethod
          method()
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor05.py", line 218, in test_cursor
          self.check_entries(2, nentries, True)
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor05.py", line 183, in check_entries
          self.check_iterate(cursor, expectcount, isforward)
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor05.py", line 121, in check_iterate
          self.check_iterate_forward(cursor, expectcount)
        File "/home/dda/wt/git/wt-15262-python-tests-stability-triage/test/suite/test_cursor05.py", line 94, in check_iterate_forward
          self.assertEqual(i, expectcount)
      AssertionError: 0 != 3
      
      ----------------------------------------------------------------------
      Ran 1 test in 1.056s
      
      FAILED (failures=1)
      

      In fact it fails on 4 "subtests" in the test_cursor function:

              self.check_entries(0, nentries, True)
              self.check_entries(1, nentries, True)
              self.check_entries(2, nentries, True)  # FAIL
              self.check_entries(0, nentries, False)  # FAIL
              self.check_entries(1, nentries, False)  # FAIL
              self.check_entries(2, nentries, False)  # FAIL
      

      The four noted lines, if commented out, allow the test to run, if any are uncommented they fail. It seems to be that a simple case of "open_cursor, next, prev" works, but anything more elaborate "open_cursor, prev, next" does not.

            Assignee:
            Ivan Kochin
            Reporter:
            Donald Anderson
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: