Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-5543

Failed to open cursor on table that had writing failure on close

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • WT10.0.0, 4.4.0-rc6, 4.7.0
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • 8
    • Storage - Tora 2020-05-04, Storage - Tora 2020-05-18

      The wireditger-test-unit-long Jenkins job captured a table content mismatch failure while running test_bug018.py. The test simulates a write failure to a table by closing the underlying OS file descriptor, and later attempt of reopening the table was likely failed leaving no content in result2 list. 

      http://build.wiredtiger.com:8080/job/wiredtiger-test-unit-long/4645/

      The issue signature:

      FAIL: test_bug018.test_bug018.test_bug018 (subunit.RemotedTestCase)
      test_bug018.test_bug018.test_bug018
      ----------------------------------------------------------------------
      _StringException: Traceback (most recent call last):
        File "/mnt/data0/jenkins/workspace/wiredtiger-test-unit-long/test/suite/test_bug018.py", line 118, in test_bug018
          self.assertEqual(results1, results2)
        File "/usr/lib/python2.7/unittest/case.py", line 513, in assertEqual
          assertion_func(first, second, msg=msg)
        File "/usr/lib/python2.7/unittest/case.py", line 743, in assertListEqual
          self.assertSequenceEqual(list1, list2, msg, seq_type=list)
        File "/usr/lib/python2.7/unittest/case.py", line 725, in assertSequenceEqual
          self.fail(msg)
        File "/usr/lib/python2.7/unittest/case.py", line 410, in fail
          raise self.failureException(msg)
      AssertionError: Lists differ: [['key', 'value']] != []
      
      First list contains 1 additional elements.
      First extra element 0:
      ['key', 'value']
      
      - [['key', 'value']]
      + [] 

      Related test code segment:

              # After reopening and running recovery both tables should be in
              # sync even though table 1 was successfully written and table 2
              # had an error on close.
              self.open_conn(new_home_dir)        results1 = list(self.session.open_cursor(self.uri1))        # It's possible the second table can't even be opened.
              # That can happen only if the root page was not pushed out.
              # We can't depend on the text of a particular error message to be
              # emitted, so we'll just ignore the error.
              self.captureerr.check(self)     # check there is no error output so far
              try:
                  results2 = list(self.session.open_cursor(self.uri2))
              except:
                  # Make sure there's some error, but we don't care what.
                  self.captureerr.checkAdditionalPattern(self, '.')
                  results2 = []
              self.assertEqual(results1, results2) 

            Assignee:
            sue.loverso@mongodb.com Susan LoVerso
            Reporter:
            luke.chen@mongodb.com Luke Chen
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: