Details
-
Task
-
Resolution: Done
-
Major - P3
-
None
-
None
-
None
-
Execution Team 2020-12-28, Execution Team 2021-01-11, Execution Team 2021-01-25, Execution Team 2021-02-08, Execution Team 2021-02-22
Description
Currently we're adding shared_ptr getters to the interfaces in SERVER-51319.
Ideally, CSS::getShared, etc., would return const pointers, but would require further interface changes to accept const pointers. Also, without const pointers, or more accurately without copy-on-write, the metadata instance fetched can be modified during a read. (internally, Collection/DatabaseShardingState have concurrency control via mutex, but state still changes??)
Maybe this is safe, but need to double check, particularly with things like the resharding project coming up?
Attachments
Issue Links
- causes
-
SERVER-54401 Move shard filtering metadata out of the query layer and into the new CollectionPtr class
-
- Closed
-
-
SERVER-54402 CollectionShardingState and DatabaseShardingState should return immutable const references for lock-free read operations
-
- Closed
-
-
SERVER-54403 The paradigm of acquiring DSSLocks and CSSLocks AFTER fetching the DSS or CSS under a database/collection level lock doesn't work in a lock-free read world
-
- Closed
-
-
SERVER-54404 Move the dbVersion check out of AutoGetDb and AutoGetCollectionForReadLockFree helpers and instead call explicitly in operations where needed
-
- Closed
-
- duplicates
-
SERVER-53392 Determine what longer term sharding changes are needed after SERVER-51319
-
- Closed
-
- related to
-
SERVER-51319 Check DatabaseShardingState::checkDbVersion after acquiring a storage snapshot for AutoGetCollection*LFR
-
- Closed
-