[DOCS-14434] Investigate changes in SERVER-55163: Add runtime-configurable setParameter for turning SBE on and off Created: 10/May/21  Updated: 13/Nov/23  Resolved: 11/May/21

Status: Closed
Project: Documentation
Component/s: Server
Affects Version/s: None
Fix Version/s: 5.0.0-rc0, Server_Docs_20231030, Server_Docs_20231106, Server_Docs_20231105, Server_Docs_20231113

Type: Task Priority: Major - P3
Reporter: Backlog - Core Eng Program Management Team Assignee: Unassigned
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Documented
documents SERVER-55163 Add runtime-configurable setParameter... Closed
Participants:
Days since reply: 2 years, 39 weeks, 1 day ago

 Description   

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.)



 Comments   
Comment by Jeffrey Allen [ 11/May/21 ]

Closing as "Won't Fix" since we don't want public-facing docs for an internal flag.

Generated at Thu Feb 08 08:10:22 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.