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

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

    XMLWordPrintableJSON

Details

    • Icon: Task Task
    • Resolution: Unresolved
    • Icon: Major - P3 Major - P3
    • None
    • None
    • None
    • None
    • Replication
    • 112

    Description

      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.

      Attachments

        Activity

          People

            backlog-server-repl Backlog - Replication Team
            vishnu.kaushik@mongodb.com Vishnu Kaushik
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated: