Invariant in TopologyTimeTicker can trip during initial sync

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • 8.3.0-rc0
    • Affects Version/s: 7.0.0, 8.0.0, 8.2.0
    • Component/s: Sharding
    • None
    • Catalog and Routing
    • Fully Compatible
    • ALL
    • CAR Team 2026-02-02, CAR Team 2026-02-16
    • 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:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: