[SERVER-45082] Secondaries only learn configs with higher (term, version) pair Created: 12/Dec/19  Updated: 29/Oct/23  Resolved: 10/Feb/20

Status: Closed
Project: Core Server
Component/s: Replication
Affects Version/s: None
Fix Version/s: 4.3.4

Type: Task Priority: Major - P3
Reporter: Siyuan Zhou Assignee: William Schultz (Inactive)
Resolution: Fixed Votes: 0
Labels: safe-reconfig-consensus
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-47348 Require configTerm in replSetHeartbea... Backlog
Backwards Compatibility: Fully Compatible
Sprint: Repl 2019-12-30, Repl 2020-01-13, Repl 2020-01-27, Repl 2020-02-10, Repl 2020-02-24
Participants:

 Description   

Secondaries only learn a new config via heartbeats if the new config has a higher (term, version) pair than the node’s current config.



 Comments   
Comment by Githook User [ 10/Feb/20 ]

Author:

{'username': 'will62794', 'name': 'William Schultz', 'email': 'william.schultz@mongodb.com'}

Message: SERVER-45082 Utilize ConfigVersionAndTerm structure for comparison and string formatting
Branch: master
https://github.com/mongodb/mongo/commit/d80b24a633107f81fcdd2cb7cf9ce0dec89802a1

Comment by William Schultz (Inactive) [ 06/Feb/20 ]

As a part of these changes, we decided to omit the "configTerm" field on all heartbeat requests sent by arbiters. This is to prevent 4.2 nodes from failing to parse these requests in a mixed version set, since arbiters don't respect FCV changes. This should be safe since the fields in a heartbeat requests only affect whether a node is going to immediately fetch a new config from the sender. It shouldn't affect the safety of the protocol. In certain cases, since omission of a configTerm in 4.4 is treated as a default of -1, it may prevent a node from fetching a newer config immediately, or cause a node to fetch a config that isn't actually newer. In either case, though, the node should never actually install a config that isn't newer, which is the necessary safety requirement.

Comment by Githook User [ 06/Feb/20 ]

Author:

{'name': 'William Schultz', 'username': 'will62794', 'email': 'william.schultz@mongodb.com'}

Message: SERVER-45082 Secondaries only learn replica set configs with a newer (version, term) pair
Branch: master
https://github.com/mongodb/mongo/commit/36f668e510c99b47620c1985e65c72a106fadbbe

Comment by Githook User [ 04/Feb/20 ]

Author:

{'name': 'William Schultz', 'username': 'will62794', 'email': 'william.schultz@mongodb.com'}

Message: SERVER-45082 Add ConfigVersionAndTerm structure for comparing replica set configs
Branch: master
https://github.com/mongodb/mongo/commit/7fa0a642fa7e99740b83e61040b01498dfb889eb

Generated at Thu Feb 08 05:07:49 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.