-
Type: Task
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Storage
-
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
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?
- 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