-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Replication
-
None
-
Fully Compatible
-
ALL
-
Repl 2019-04-22, Repl 2019-05-06
-
53
The AutoGetCollectionForRead constructor has an invariant ensuring that either we are reading from the lastApplied timestamp or we have a kMajorityCommitted read source. This invariant can only be reached if there are conflicting catalog changes on the collection that is being read from. Speculative majority change stream reads utilize the kNoOverlap read source, so they will not choose to explicitly read from the lastApplied timestamp, since the no-overlap read source already handles the selection of a proper read timestamp. If there are conflicting catalog changes, though, they will violate the invariant since they are not using a kMajorityCommitted read source. We should extend the invariant to permit the kNoOverlap read source.