-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Catalog and Routing
In SERVER-90992 we discovered that the following invalid ABA scenario is right now impossible to detect:
- Lock on collA is acquired
- ConsistentCollection on collA is created
- Lock is released
- Lock is acquired again
- ConsistentCollection is used even if it's potentially invalid
This is because collections acquired under a lock have a guarantee they'll be consistent with the snapshot by nature of having a lock. However, if the lock is released the collection may change at any time before it's acquired again yielding the previous pointer invalid.
This is right now impossible to detect because we can't ascertain the generation of a lock acquired, rendering any two lock acquisitions on the same target identical in nature even if they are acquired at different times. If such information were available the previous case would be trivial to detect since the second acquisition would have a different generational value from the first one.
- depends on
-
SERVER-90992 Collection acquisitions have no enforcement of snapshot stability
- In Code Review
- is related to
-
SERVER-90992 Collection acquisitions have no enforcement of snapshot stability
- In Code Review
-
SERVER-94876 Add global lock ordering check to avoid lock-free reads taking a normal lock
- Open