Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-82119

Add guardrails to prevent incompatibilities between binary versions on the same FCV

    • Type: Icon: Task Task
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • Replication
    • 112

      Currently it's possible for developers to introduce / remove parameters across binary versions in a way that means behavior will diverge across binary versions, even if the nodes have the same FCV. We should add guardrails to prevent developers from doing this.

      As a concrete example, recordPreImages is an option that is available in createCollection / collMod in 6.0 binaries. It was removed in SERVER-60919 and doesn't exist on 7.0 binaries.

      However this was implemented in a way so that a primary with FCV 6.0 and binary 6.0 accepts this command:

      db.runCommand({createCollection: "coll", recordPreImages: true})
      

      A primary with FCV 6.0 but binary 7.0 will error on the same command, meaning it diverges from the 6.0 binary.

      There are some more edge cases with undefined behavior that can occur in mixed version replica sets. See the linked BF.

            Assignee:
            backlog-server-repl [DO NOT USE] Backlog - Replication Team
            Reporter:
            vishnu.kaushik@mongodb.com Vishnu Kaushik
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated: