Invariant in TopologyTimeTicker can trip during initial sync

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: 7.0.0, 8.0.0, 8.2.0
    • Component/s: None
    • None
    • Catalog and Routing
    • ALL
    • CAR Team 2026-02-02
    • 200
    • 🟩 Routing and Topology
    • None
    • None
    • None
    • None
    • None
    • None

      TopologyTimeTicker::onNewLocallyCommittedTopologyTimeAvailable is called from three different places:

      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.

            Assignee:
            Jordi Serra Torrens
            Reporter:
            Jordi Serra Torrens
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: