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

Index build restart ident drops are not timestamped during startup recovery

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 5.0.0-rc0
    • Affects Version/s: 4.9.0
    • Component/s: None
    • Labels:
      None
    • Fully Compatible
    • ALL
    • Execution Team 2021-04-19, Execution Team 2021-05-03, Execution Team 2021-05-17
    • 137

      This assertion added in SERVER-38910, made an assumption that all ident drops are timestamped. During startup recovery, if an index build is unfinished and needs to be restarted, we drop the original ident without a timestamp. This can cause this assertion to fail in certain circumstances.

      I think we need to either:

      • Timestamp the ident drop on startup recovery. This would ensure we don't drop the ident until it is majority-committed. Unfortunately, we aren't starting the index build from oplog entry, so we would potentially have to use a timestamp in the future, ahead of the recovery timestamp.
      • Relax this assertion to exclude unfinished index builds. Similar to the original code, if we discover that an ident is missing for an index, we only need to guarantee it will be rebuilt. If we do this, we also need to ensure that we don't error if we try to drop an ident that doesn't exist.

            Assignee:
            gregory.noma@mongodb.com Gregory Noma
            Reporter:
            louis.williams@mongodb.com Louis Williams
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: