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

[Server] Investigate changes in SERVER-75054: Clarify names and default value for QueryFrameworkControl

      Original Downstream Change Summary

      On v6.3 by default, internal server parameter 'internalQueryFrameworkControl' is set to 'tryBonsai', and the feature flag 'featureFlagCommonQueryFramework' is disabled.

      This commit changes the default for v7.0. On v7.0 by default, internal server parameter 'internalQueryFrameworkControl' is set to 'trySbeEngine', and the feature flag 'featureFlagCommonQueryFramework' is still disabled. Also, this commit makes it an error to set 'internalQueryFrameworkControl' to 'tryBonsai' when 'featureFlagCommonQueryFramework' is disabled.

      So, if a user on v6.3.dumped all of the default values of server parameters, including internal parameters, to a file and then used that file to start up a 7.0 mongod, they would see an error. The effect would be the same as trying to set an internal server parameter which has been deleted. We do not expect this to be common.

      Note there are no changes to the default query behavior seen by users because the related feature flag is still disabled. Also, this does not affect users who have the internal flag set to 'forceClassic'. The change is that mongod cannot start up by default with 'internalQueryFrameworkControl' set to 'tryBonsai'.

      Description of Linked Ticket

      Currently users can pass in any of these values for the QueryFrameworkControl enum:

      • forceClassicEngine
      • trySbeEngine
      • tryBonsai
        • This is the default.
        • Confusingly, it behaves the same as 'trySbeEngine' by default. (Depends on a feature flag.)
      • forceBonsai
        • Also behaves the same as 'trySbeEngine' by default.

      There are a couple problems with this:

      1. The default behavior is unclear: the enum defaults to 'tryBonsai' but the actual behavior defaults to 'trySbeEngine'.
      2. The name "Bonsai" may not be final, so we should not bake it in to user-facing options.

      I would propose the following behavior:

      • forceClassicEngine
      • trySbeEngine
        • Make this the default.
      • tryBonsai
        • Error if the feature flag is not enabled.
      • forceBonsai
        • Error if the feature flag is not enabled.

      This solves the two problems:

      1. The default behavior is clearly 'trySbeEngine'.
      2. The names 'tryBonsai' and 'forceBonsai' are not user-facing, because you can't specify them without the feature flag + enableTestCommands.

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

              Created:
              Updated:
              Resolved:
              1 year, 4 weeks, 6 days ago