-
Type: Investigation
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Not Needed
No impacts on downstream teams unless replSetResizeOplog and setIndexCommitQuorum commands were being used outside of the documented syntax.
db.adminCommand(
{ replSetResizeOplog: <int>, size: <double>, minRetentionHours: <double> })
db.runCommand(
{ setIndexCommitQuorum: <string>, indexNames: [ <document> ], commitQuorum: <int> | <string>, comment: <any> })
Description of Linked Ticket
The following commands are user-facing but specify {strict: false} for how they parse their input. This means if the operator misspells an argument to the commands or includes a non-existing one, they won't always get an error. Changing these commands to be {strict: true} would protect against this but should be weighed against driver's and/or server's ability to send these commands internally without needing to know which version of the server they are talking with.
- replSetResizeOplog in src/mongo/db/commands/resize_oplog.idl
- setIndexCommitQuorum in src/mongo/db/commands/set_index_commit_quorum.idl
import pathlib import yaml def check_file(pathname): with open(pathname) as data: blob = yaml.safe_load(data) for (command, command_details) in blob.get("commands", {}).items(): if not command_details.get("strict", True): yield command_details["command_name"] for pathname in pathlib.Path().rglob("src/mongo/**/*.idl"): if str(pathname) == "src/mongo/idl/unittest.idl": continue for command in check_file(pathname): if not command.startswith("_"): print(f"{command} in {pathname}")
- depends on
-
SERVER-65030 Consider making external user facing commands replSetResizeOplog and setIndexCommitQuorum error when given unrecognized options
- Closed