[SERVER-48019] Investigate whether queries can continue after a yield when the catalog has been closed and reopened Created: 07/May/20  Updated: 27/Oct/23  Resolved: 07/May/20

Status: Closed
Project: Core Server
Component/s: Storage
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Dianna Hohensee (Inactive) Assignee: Backlog - Storage Execution Team
Resolution: Works as Designed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-37449 Delete CursorManager's PlanExecutor r... Closed
related to SERVER-47872 Move the Database class' epoch into t... Closed
Assigned Teams:
Storage Execution
Participants:

 Description   

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)



 Comments   
Comment by Connie Chen [ 07/May/20 ]

Queries should not to survive rollback

Generated at Thu Feb 08 05:15:54 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.