Details
-
Bug
-
Resolution: Unresolved
-
Major - P3
-
None
-
7.0.0, 7.1.0, 7.3.0-rc0, 7.2.0
-
None
-
None
-
Catalog and Routing
-
ALL
-
144
-
2
Description
Today, the catalog::forEachCollectionFromDb() iterates through the database collections using the lookupNSSByUUID() primitive, which does not guarantee alignment between the in-memory catalog cache and the metadata persisted in WiredTiger if ReadConcernArgs is set on the opCtx. This would cause the following scenario to occur:
- We abandon the snapshot.
- We lock the collection based on the latest CollectionCatalog information.
- We execute the function with a collection that may not exist at the given read concern timestamp but exists at the latest timestamp.
The usage of establishConsistentCollection/s() methods would on the other hand guarantee a more robust behaviour against concurrent creation of new database collections.