[SERVER-82119] Add guardrails to prevent incompatibilities between binary versions on the same FCV Created: 12/Oct/23  Updated: 26/Jan/24

Status: Open
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Vishnu Kaushik Assignee: Backlog - Replication Team
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-85797 Add a test that diffs IDL files for c... Open
is related to SERVER-85459 bucketRoundingSeconds param is accept... Open
Assigned Teams:
Replication
Participants:
Linked BF Score: 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.



 Comments   
Comment by Huayu Ouyang [ 16/Oct/23 ]

potentially running suites that run last-lts tests on a latest binary (ex: 6.0 tests on a 7.0 binary) would catch this

Generated at Thu Feb 08 06:48:18 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.