Document and enforce invariants of the vector clock

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Catalog and Routing
    • 2
    • 🟩 Routing and Topology
    • None
    • None
    • None
    • None
    • None
    • None

      During the code review of SERVER-126262, we realized that we don't have documentation or enforcement of the vector clock's invariants that are relied upon for correctness by other components.

      One of these invariants is that a bumped topology time cannot be gossiped out without a bumped config time, since the config time is used by the shard registry as the afterClusterTime to read the new entries in config.shards.

      Another invariant documented sporadically in the code is that the operationTime must be less than or equal to the clusterTime gossiped out.

      It would be good to have a list of invariants which are both validated in unittests or the code itself and documented clearly in the header file or a readme.

            Assignee:
            Unassigned
            Reporter:
            Allison Easton
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: