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

Iterating through indexes when reading from a timestamp behind the minimumVisibleSnapshot should not cause an invariant

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 4.0.0-rc0
    • 3.7.5
    • Storage
    • None
    • Fully Compatible
    • ALL
    • Storage NYC 2018-05-07, Storage NYC 2018-05-21
    • 16

    Description

      An invariant is hit when an index exists in memory (because it has completed), but it is not yet visible on the storage engine when reading at an earlier timestamp.

      A query that reads from a timestamp is allowed to yield. When its locks are reacquired and it reads again, say it reads from a newer timestamp, T1. If an index build occurs during the yield at T2, and the read timestamp on the query is before the index build timestamp, iterating through the list of indexes on a collection can trigger this invariant.

      Rather than always triggering an invariant, we should just not show the index as ready. This will only be the case when the current operation is reading from a timestamp and the index is marked ready in memory but not visible on the storage engine.

      Attachments

        Activity

          People

            dianna.hohensee@mongodb.com Dianna Hohensee (Inactive)
            louis.williams@mongodb.com Louis Williams
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: