Uploaded image for project: 'Documentation'
  1. Documentation
  2. DOCS-15558

Investigate changes in SERVER-65030: Consider making external user facing commands replSetResizeOplog and setIndexCommitQuorum error when given unrecognized options

    XMLWordPrintableJSON

Details

    • Task
    • Status: Closed
    • Major - P3
    • Resolution: Won't Fix
    • None
    • 6.1.0-rc0
    • manual, Server
    • None
    • Hide
      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>
         }
      )
      Show
      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>    } )
    • true

    Description

      Original Downstream Change Summary

      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.


      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}")
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              backlog-server-pm Backlog - Core Eng Program Management Team
              Jess Mokrzecki Jess Mokrzecki
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:
                21 weeks, 5 days ago