[SERVER-54956] Move away from using Bson_serialization_type “any” - CommitQuorum Created: 04/Mar/21  Updated: 29/Oct/23  Resolved: 12/Apr/21

Status: Closed
Project: Core Server
Component/s: Index Maintenance
Affects Version/s: None
Fix Version/s: 5.0.0-rc0

Type: Task Priority: Major - P3
Reporter: Moustafa Maher Assignee: Benety Goh
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-55960 IDL generated code should pass field ... Closed
related to SERVER-55899 Move away from using Bson_serializati... Closed
related to SERVER-56050 Complete TODO listed in SERVER-54956 Closed
Backwards Compatibility: Fully Compatible
Sprint: Execution Team 2021-04-19
Participants:

 Description   

Using Bson_serialization_type “any” means that idl compatibility checker script can’t do any type checking, since that logic is in cpp, so we want to disallow this type from parameters/reply fields as a result.

However, lots of commands actually use it for valid reasons.
For now we added some exceptions to allow using Bson_serialization_type “any” in our idl_checker script, these are the lisf of fields that still using Bson_serialization_type “any” that require your attention:

src/mongo/db/create_indexes.idl

  1. The 'createIndexes'' command has parameter 'commitQuorum' that has type
  2. 'CommitQuorum' 'createIndexes' has a reply field 'commitQuorum' of type 'CommitQuorum'  

 
Take a look at these fields and try to identify which ones can be converted away from using Bson_serialization_type “any”, and which ones must keep using it.
Here are the two outcomes:
1- if the field can be converted:

  • This change should be done before 5.0 (if the field is "stable") as this will be the realese for API stable Version 1
  • The exception for that field should be removed from idl_checker script (TODO will be added with this ticket number).

2- if the field can't be converted, or the change can't be done before 5.0.

  • The type of that field type should stay of Bson_serialization_type “any” and can't be changed later for any reason unless it is defined as "unstable".
  • We need to put comments on the serialization/deserialization to prevent the behavioral changes (preferably to add tests to ensure that.)


 Comments   
Comment by Githook User [ 11/Apr/21 ]

Author:

{'name': 'Benety Goh', 'email': 'benety@mongodb.com', 'username': 'benety'}

Message: SERVER-54956 move CommitQuorum away from using Bson_serialization_type any
Branch: master
https://github.com/mongodb/mongo/commit/f5a4ebbb86e1efe99fbb432f50159117354eaed5

Comment by Louis Williams [ 05/Mar/21 ]

The field should be easily convertible to a variant<int, string>. We just need to make sure we can maintain the same type-specific input validation.

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