-
Type: Task
-
Resolution: Works as Designed
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Storage
-
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)
- related to
-
SERVER-37449 Delete CursorManager's PlanExecutor registry
- Closed
-
SERVER-47872 Move the Database class' epoch into the CollectionCatalog
- Closed