[SERVER-32635] Provide a framework to ensure a last stable binary version mongos crashes when attempting to connect to a latest featureCompatibilityVersion sharded cluster for all last stable binary versions >= 3.8 Created: 10/Jan/18  Updated: 30/Oct/23  Resolved: 20/Feb/18

Status: Closed
Project: Core Server
Component/s: Upgrade/Downgrade
Affects Version/s: None
Fix Version/s: 3.7.3

Type: New Feature Priority: Major - P3
Reporter: Maria van Keulen Assignee: Dianna Hohensee (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Documented
is documented by DOCS-11387 Docs for SERVER-32635: Provide a fram... Closed
Related
is related to SERVER-31094 Mongos should fail gracefully when po... Closed
Backwards Compatibility: Fully Compatible
Sprint: Storage 2018-01-29, Storage 2018-02-12, Storage 2018-02-26
Participants:
Linked BF Score: 0

 Description   

If a last-stable binary version mongos attempts to point to a latest featureCompatibilityVersion sharded cluster, the mongos will spin, repeatedly attempting to connect and failing with IncompatibleServerVersion errors. Instead, the mongos should crash in this scenario. This framework should be available for all last-stable binary versions >= 3.8. This implementation should not cause a latest binary version mongos to crash upon attempting to connect to a last stable binary version node.
A proposed implementation for the framework follows:
The validateWireVersion function in protocol.cpp can be modified to have a new error code that is returned when the client's maximum wireVersion is less than the server's minimum wireVersion. If the client is a mongos and it sees this error upon calling validateWireVersion, it will crash. The client can use the isMongos() function to determine whether it is a mongos.This low-level implementation is justifiable because a last-stable mongos should crash upon any attempts to connect to a latest featureCompatibilityVersion node in the cluster. This implementation assumes a mongos will only be a client to other members of the same sharded cluster and not to members of a different sharded cluster.



 Comments   
Comment by Githook User [ 17/Feb/18 ]

Author:

{'email': 'daniel.gottlieb@mongodb.com', 'name': 'Daniel Gottlieb', 'username': 'dgottlieb'}

Message: SERVER-32635: Fix lint
Branch: master
https://github.com/mongodb/mongo/commit/b1265cde657a41f6e862674446501472f5b5845b

Comment by Githook User [ 16/Feb/18 ]

Author:

{'email': 'dianna.hohensee@10gen.com', 'name': 'Dianna Hohensee', 'username': 'DiannaHohensee'}

Message: SERVER-32635 an old mongos server communicating with a fully upgraded cluster should crash
Branch: master
https://github.com/mongodb/mongo/commit/d1c188b17167f0430f5a8d10e972c0d00a908ba2

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