TopologyTimeTicker::onNewLocallyCommittedTopologyTimeAvailable is called from three different places:
- ConfigServerOpObserver::onInserts
- ConfigServerOpObserver::onUpdate
- VectorClockMongoD::onConsistentDataAvailable
ConfigServerOpObserver::onInserts avoids calling onNewLocallyCommittedTopologyTimeAvailable during initial sync. However, ConfigServerOpObserver::onUpdate does not.
Because of that, when a node undergoes initial sync, it could be that onUpdate registers a topology time tick with a commit time CT.
If that happens to also be the stopTimestamp of the initial sync, then VectorClockMongoD::onConsistentDataAvailable will be called with commit time also CT. This violates this invariant, as commitTime will be equal to _topologyTimeByLocalCommitTime.crbegin()->first, so the configsvr replica undergoing initial sync will crash.
- is caused by
-
SERVER-65837 Use internal transactions instead of applyOps in removeShard
-
- Closed
-