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

Implement missing index key check in dbCheck

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 7.2.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • Fully Compatible
    • Repl 2023-07-24, Repl 2023-08-07, Repl 2023-08-21, Repl 2023-09-04, Repl 2023-09-18, Repl 2023-10-02
    • 14

      The DbCheckHasher class today implements the hashing logic for the data consistency check in dbCheck. Since it already has access to each document by walking the _id index, we will implement the missing index keys check within the DbCheckHasher.

      The algorithm for the missing index keys check will be:
      *Primary iterates through record store at a given start point until it hits a batch boundary (total number of bytes/records limitation hit)
      For each record traversed in batch and for each index that we are checking:

      • Fetch all index key entries corresponding to its index field values and record ID
      • Look up each of those index keys in the index table
      • If we do not find the index key entry, report the inconsistency to the health log
      • We will also verify that the document complies with index settings (for example, it does not have multiple index keys if the index is not multikey)
      • Add the size of the document and index keys to the total count of bytes. If we have exceeded a speed parameter, complete the batch and return

      Secondaries will determine batch boundaries from an oplog entry that primary writes
      This is currently already done by the DbCheckHasher

            Assignee:
            xuerui.fa@mongodb.com Xuerui Fa
            Reporter:
            xuerui.fa@mongodb.com Xuerui Fa
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: