Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-53184

Abort in testing when validate fails to traverse an index entry

    • Fully Compatible
    • v4.4
    • Execution Team 2021-04-05
    • 35

      Currently, WiredTigerIndex::fullValidate() has two phases. The first phase runs WT verify and records any errors into the fullResults structure.
      The second phase opens a cursor on the index table at the beginning (or end if it's a reverse index) and simply iterates the cursor until it hits EOF. It does not record any errors into fullResults; instead, it depends on the cursor to examine and parse each record, including parsing the KeyString in the key of the record and any TypeBits in the value of the record, and for any problems therein to throw an exception, which then bubbles all the way up to the top of the validate command and prevents it from validating anything further (including any more indexes in that same collection).
      This behavior is undesirable since in the presence of validation errors, the validate command response doesn't even report what index had the error (you have to look in the log). I think this behavior is best fixed by amending fullValidate()'s second phase to capture exceptions in the cursor seek loop, and to fill in fullResults.

            Assignee:
            louis.williams@mongodb.com Louis Williams
            Reporter:
            milkie@mongodb.com Eric Milkie
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: