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

Investigate whether queries can continue after a yield when the catalog has been closed and reopened

    • Type: Icon: Task Task
    • Resolution: Works as Designed
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Storage
    • Labels:
      None
    • Storage Execution

      Since SERVER-37449, with this change, query will check on restore that the database epoch has not changed since yielding. This was to handle invalidation of catalog pointers when the catalog is closed and reopened. Currently, only rollback closes and reopens the catalog: the restartCatalog command has been removed.

      However, RequiresCollectionStage, which handles restoring the query and checking the database epoch, is supposed to contain all the pointers that the query needs. Therefore, there shouldn't be an invalid pointers, because RequiresCollectionStage's restore resets them all with the latest from the reopened catalog.

      So we want to know whether this epoch check is still necessary (something was broken back when SERVER-37449 was committed); or what is no longer valid after closing and reopening the catalog. It could be that storage-level cursors can get invalidated if the catalog has been closed and re-opened.

      (note: SERVER-47872 will move the epoch from the Database to the CollectionCatalog)

            Assignee:
            backlog-server-execution [DO NOT USE] Backlog - Storage Execution Team
            Reporter:
            dianna.hohensee@mongodb.com Dianna Hohensee (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: