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

Investigate changes in SERVER-55163: Add runtime-configurable setParameter for turning SBE on and off

      Description

      Downstream Change Summary

      This ticket adds the 'internalQueryForceClassicEngine' flag which allows users to configure the use of SBE at runtime. The flag will be set to false by default, meaning that SBE will be used wherever possible. If a user wishes to disable SBE, they can do so by setting 'internalQueryForceClassicEngine' to 'true' like so:

      db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})

      Similarly, SBE can be re-enabled by setting 'internalQueryForceClassicEngine' to false:

      db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})

       

      Description of Linked Ticket

      The SBE feature can currently be turned on and off using the featureFlagSBE feature flag. Like all feature flags, it can only be set at server startup, not while the server is running. For SBE, however, we believe there is some risk that customers could encounter problems in the field once it is shipped and will need to resolve their issue by explicitly disabling SBE. It would be burdensome to require them to restart their servers in this scenario. Therefore, we want to add a setParameter which can be configured at runtime to make it easier for customers to disable SBE in an emergency or support scenario.

      This means that while SBE is under development, there will be two flags: The feature flag and the regular setParameter. The behavior should be that SBE is only enabled when both flags are on. The feature flag should be configured to false by default, whereas the new flag is configured to true by default. This means that during our interim period, test suites need only enable the feature flag in order to test SBE.

      Once the feature is production ready, we will delete the feature flag but leave the regular setParameter in place. This will have the affect of enabling SBE by default, since as I mentioned above the setParameter will always have a default value of true.

      When the feature flag is deleted, we should also convert the "SBE on" build variant to the "SBE off" build variant. The SBE off build variant uses the regular setParameter to disable SBE. We need this in order to ensure that we don't lose test coverage for the classic execution engine. The classic engine must still work correctly if we think customers could experience problems with SBE and need to fall back to it.

      Scope of changes

      Impact to Other Docs

      MVP (Work and Date)

      Resources (Scope or Design Docs, Invision, etc.)

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

              Created:
              Updated:
              Resolved:
              2 years, 50 weeks ago