SERVER-106306 Convert UWE query knob to an IFR flag (#44857)

GitOrigin-RevId: 36ffa983ae95f421d2f385a0a2efaf7d050b7489
This commit is contained in:
Rui Liu 2025-12-08 14:50:40 +00:00 committed by MongoDB Bot
parent 63e6747093
commit b1f3237a1a
43 changed files with 127 additions and 133 deletions

View File

@ -28,3 +28,5 @@
- featureFlagPrimaryDrivenIndexBuilds - featureFlagPrimaryDrivenIndexBuilds
# TODO SERVER-104494 SERVER-104258: Turn this back on once the issues are fixed. # TODO SERVER-104494 SERVER-104258: Turn this back on once the issues are fixed.
- featureFlagReshardingCloneNoRefresh - featureFlagReshardingCloneNoRefresh
# TODO: SERVER-91308 Enable unified write executor.
- featureFlagUnifiedWriteExecutor

View File

@ -26,7 +26,7 @@ executor:
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
logComponentVerbosity: logComponentVerbosity:
command: 1 command: 1
network: network:
@ -37,7 +37,7 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
logComponentVerbosity: logComponentVerbosity:
command: 1 command: 1
network: network:

View File

@ -23,11 +23,11 @@ executor:
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_shards: 2 num_shards: 2
hooks: hooks:
- class: CheckReplDBHash - class: CheckReplDBHash

View File

@ -34,11 +34,11 @@ executor:
set_parameters: set_parameters:
coordinateCommitReturnImmediatelyAfterPersistingDecision: true coordinateCommitReturnImmediatelyAfterPersistingDecision: true
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 2 num_rs_nodes_per_shard: 2
hooks: hooks:
- class: DropSessionsCollection - class: DropSessionsCollection

View File

@ -17,17 +17,17 @@ executor:
global_vars: global_vars:
TestData: TestData:
doNotUseRawDataOperations: true doNotUseRawDataOperations: true
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
fixture: fixture:
class: ShardedClusterFixture class: ShardedClusterFixture
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 1 num_rs_nodes_per_shard: 1
num_shards: 2 num_shards: 2
hooks: hooks:

View File

@ -15,9 +15,9 @@ executor:
global_vars: global_vars:
TestData: TestData:
doNotUseRawDataOperations: true doNotUseRawDataOperations: true
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
setParametersMongos: setParametersMongos:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
nodb: "" nodb: ""
matrix_suite: true matrix_suite: true
selector: selector:

View File

@ -34,9 +34,9 @@
shell_options: shell_options:
global_vars: global_vars:
TestData: TestData:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
setParametersMongos: setParametersMongos:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
- name: unified_write_executor_sharding_jscore_passthrough - name: unified_write_executor_sharding_jscore_passthrough
value: value:
@ -45,16 +45,16 @@
shell_options: shell_options:
global_vars: global_vars:
TestData: TestData:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
fixture: fixture:
class: ShardedClusterFixture class: ShardedClusterFixture
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 1 num_rs_nodes_per_shard: 1
num_shards: 2 num_shards: 2

View File

@ -43,7 +43,7 @@ executor:
shell_options: shell_options:
global_vars: global_vars:
TestData: TestData:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
- class: CheckReplDBHash - class: CheckReplDBHash
- class: CheckMetadataConsistencyInBackground - class: CheckMetadataConsistencyInBackground
@ -57,9 +57,9 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 1 num_rs_nodes_per_shard: 1

View File

@ -231,8 +231,8 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true

View File

@ -56,7 +56,7 @@ executor:
runningWithCausalConsistency: true runningWithCausalConsistency: true
runningWithBalancer: false runningWithBalancer: false
implicitlyShardOnCreateCollectionOnly: true implicitlyShardOnCreateCollectionOnly: true
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
- class: CheckShardFilteringMetadata - class: CheckShardFilteringMetadata
- class: CheckReplDBHashInBackground - class: CheckReplDBHashInBackground
@ -73,7 +73,7 @@ executor:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
shard_options: shard_options:
mongod_options: mongod_options:
oplogSize: 1024 oplogSize: 1024
@ -83,7 +83,7 @@ executor:
roleGraphInvalidationIsFatal: 1 roleGraphInvalidationIsFatal: 1
queryAnalysisWriterIntervalSecs: 1 queryAnalysisWriterIntervalSecs: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 3 num_rs_nodes_per_shard: 3
num_shards: 2 num_shards: 2
num_mongos: 2 num_mongos: 2

View File

@ -67,7 +67,7 @@ executor:
runningWithCausalConsistency: true runningWithCausalConsistency: true
runningWithBalancer: true runningWithBalancer: true
implicitlyShardOnCreateCollectionOnly: true implicitlyShardOnCreateCollectionOnly: true
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
- class: CheckShardFilteringMetadata - class: CheckShardFilteringMetadata
@ -84,7 +84,7 @@ executor:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
shard_options: shard_options:
mongod_options: mongod_options:
oplogSize: 1024 oplogSize: 1024
@ -96,7 +96,7 @@ executor:
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
skipDroppingHashedShardKeyIndex: true skipDroppingHashedShardKeyIndex: true
reshardingMinimumOperationDurationMillis: 0 reshardingMinimumOperationDurationMillis: 0
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 3 num_rs_nodes_per_shard: 3
num_shards: 2 num_shards: 2
num_mongos: 2 num_mongos: 2

View File

@ -149,7 +149,7 @@ executor:
enableTestCommands: 1 enableTestCommands: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
findShardsOnConfigTimeoutMS: 30000 # giving legroom as this suite is doing initial sync findShardsOnConfigTimeoutMS: 30000 # giving legroom as this suite is doing initial sync
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
shard_options: shard_options:
all_nodes_electable: True all_nodes_electable: True
mongod_options: mongod_options:
@ -177,7 +177,7 @@ executor:
queryAnalysisWriterIntervalSecs: 1 queryAnalysisWriterIntervalSecs: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
skipDroppingHashedShardKeyIndex: true skipDroppingHashedShardKeyIndex: true
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 3 num_rs_nodes_per_shard: 3
num_shards: 2 num_shards: 2
num_mongos: 2 num_mongos: 2

View File

@ -94,7 +94,7 @@ executor:
runningWithSessions: true runningWithSessions: true
traceExceptions: false traceExceptions: false
implicitlyShardOnCreateCollectionOnly: true implicitlyShardOnCreateCollectionOnly: true
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
- class: CheckShardFilteringMetadata - class: CheckShardFilteringMetadata
- class: CheckReplDBHashInBackground - class: CheckReplDBHashInBackground
@ -111,7 +111,7 @@ executor:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
shard_options: shard_options:
mongod_options: mongod_options:
oplogSize: 1024 oplogSize: 1024
@ -121,7 +121,7 @@ executor:
roleGraphInvalidationIsFatal: 1 roleGraphInvalidationIsFatal: 1
queryAnalysisWriterIntervalSecs: 1 queryAnalysisWriterIntervalSecs: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 3 num_rs_nodes_per_shard: 3
num_shards: 2 num_shards: 2
num_mongos: 2 num_mongos: 2

View File

@ -99,7 +99,7 @@ executor:
traceExceptions: false traceExceptions: false
runningWithBalancer: true runningWithBalancer: true
implicitlyShardOnCreateCollectionOnly: true implicitlyShardOnCreateCollectionOnly: true
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
- class: CheckShardFilteringMetadata - class: CheckShardFilteringMetadata
@ -116,7 +116,7 @@ executor:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
shard_options: shard_options:
mongod_options: mongod_options:
oplogSize: 1024 oplogSize: 1024
@ -128,7 +128,7 @@ executor:
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
skipDroppingHashedShardKeyIndex: true skipDroppingHashedShardKeyIndex: true
reshardingMinimumOperationDurationMillis: 0 reshardingMinimumOperationDurationMillis: 0
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 3 num_rs_nodes_per_shard: 3
num_shards: 2 num_shards: 2
num_mongos: 2 num_mongos: 2

View File

@ -132,7 +132,7 @@ executor:
implicitlyShardOnCreateCollectionOnly: true implicitlyShardOnCreateCollectionOnly: true
useActionPermittedFile: [ContinuousAddRemoveShard] useActionPermittedFile: [ContinuousAddRemoveShard]
shardCollectionProbability: 0.5 shardCollectionProbability: 0.5
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
- class: ContinuousAddRemoveShard - class: ContinuousAddRemoveShard
transition_configsvr: true transition_configsvr: true
@ -159,7 +159,7 @@ executor:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
shard_options: shard_options:
mongod_options: mongod_options:
oplogSize: 1024 oplogSize: 1024
@ -172,7 +172,7 @@ executor:
skipDroppingHashedShardKeyIndex: true skipDroppingHashedShardKeyIndex: true
reshardingMinimumOperationDurationMillis: 0 reshardingMinimumOperationDurationMillis: 0
balancerMigrationsThrottlingMs: 250 balancerMigrationsThrottlingMs: 250
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
failpoint.movePrimaryFailIfNeedToCloneMovableCollections: failpoint.movePrimaryFailIfNeedToCloneMovableCollections:
data: data:
comment: *movePrimaryComment comment: *movePrimaryComment

View File

@ -49,7 +49,7 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
shard_options: shard_options:
mongod_options: mongod_options:
@ -57,7 +57,7 @@ executor:
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
roleGraphInvalidationIsFatal: 1 roleGraphInvalidationIsFatal: 1
queryAnalysisWriterIntervalSecs: 1 queryAnalysisWriterIntervalSecs: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1

View File

@ -84,7 +84,7 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1
shard_options: shard_options:
mongod_options: mongod_options:
@ -92,7 +92,7 @@ executor:
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
roleGraphInvalidationIsFatal: 1 roleGraphInvalidationIsFatal: 1
queryAnalysisWriterIntervalSecs: 1 queryAnalysisWriterIntervalSecs: 1
queryAnalysisSamplerConfigurationRefreshSecs: 1 queryAnalysisSamplerConfigurationRefreshSecs: 1

View File

@ -18,7 +18,7 @@ executor:
shell_options: shell_options:
global_vars: global_vars:
TestData: TestData:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
- class: CheckReplDBHash - class: CheckReplDBHash
- class: CheckMetadataConsistencyInBackground - class: CheckMetadataConsistencyInBackground
@ -31,9 +31,9 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 2 num_rs_nodes_per_shard: 2

View File

@ -19,7 +19,7 @@ executor:
shell_options: shell_options:
global_vars: global_vars:
TestData: TestData:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
- class: CheckReplDBHash - class: CheckReplDBHash
- class: CheckMetadataConsistencyInBackground - class: CheckMetadataConsistencyInBackground
@ -33,10 +33,10 @@ executor:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryFLEAlwaysUseEncryptedCollScanMode: 1 internalQueryFLEAlwaysUseEncryptedCollScanMode: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryFLEAlwaysUseEncryptedCollScanMode: 1 internalQueryFLEAlwaysUseEncryptedCollScanMode: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 2 num_rs_nodes_per_shard: 2

View File

@ -282,7 +282,7 @@ executor:
defaultTransactionReadConcernLevel: "snapshot" defaultTransactionReadConcernLevel: "snapshot"
defaultTransactionWriteConcernW: "majority" defaultTransactionWriteConcernW: "majority"
defaultWriteConcernW: "majority" defaultWriteConcernW: "majority"
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
networkErrorAndTxnOverrideConfig: networkErrorAndTxnOverrideConfig:
wrapCRUDinTransactions: true wrapCRUDinTransactions: true
sessionOptions: sessionOptions:
@ -306,7 +306,7 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
logComponentVerbosity: logComponentVerbosity:
@ -323,6 +323,6 @@ executor:
enableTestCommands: 1 enableTestCommands: 1
numInitialSyncAttempts: 1 numInitialSyncAttempts: 1
coordinateCommitReturnImmediatelyAfterPersistingDecision: true coordinateCommitReturnImmediatelyAfterPersistingDecision: true
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 2 num_rs_nodes_per_shard: 2
num_shards: 2 num_shards: 2

View File

@ -328,7 +328,7 @@ executor:
global_vars: global_vars:
TestData: TestData:
logRetryAttempts: true logRetryAttempts: true
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
networkErrorAndTxnOverrideConfig: networkErrorAndTxnOverrideConfig:
retryOnNetworkErrors: true retryOnNetworkErrors: true
wrapCRUDinTransactions: true wrapCRUDinTransactions: true
@ -369,7 +369,7 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
syncdelay: 5 syncdelay: 5
oplogSize: 1024 oplogSize: 1024
@ -388,7 +388,7 @@ executor:
enableTestCommands: 1 enableTestCommands: 1
enableElectionHandoff: 0 enableElectionHandoff: 0
numInitialSyncAttempts: 1 numInitialSyncAttempts: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_shards: 2 num_shards: 2
num_rs_nodes_per_shard: 3 num_rs_nodes_per_shard: 3
configsvr_options: configsvr_options:

View File

@ -90,7 +90,7 @@ executor:
network: network:
verbosity: 1 verbosity: 1
asio: 2 asio: 2
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
@ -101,5 +101,5 @@ executor:
asio: 2 asio: 2
replication: replication:
heartbeats: 2 heartbeats: 2
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 2 num_rs_nodes_per_shard: 2

View File

@ -43,7 +43,7 @@ executor:
await import('jstests/libs/override_methods/enable_causal_consistency_without_read_pref.js'); await import('jstests/libs/override_methods/enable_causal_consistency_without_read_pref.js');
global_vars: global_vars:
TestData: TestData:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
# We don't execute dbHash or oplog consistency checks since there is only a single replica set # We don't execute dbHash or oplog consistency checks since there is only a single replica set
# node. # node.
@ -57,8 +57,8 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true

View File

@ -91,7 +91,7 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
logComponentVerbosity: logComponentVerbosity:
command: 1 command: 1
network: network:
@ -101,7 +101,7 @@ executor:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
minSnapshotHistoryWindowInSeconds: 3600 minSnapshotHistoryWindowInSeconds: 3600
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
logComponentVerbosity: logComponentVerbosity:
command: 1 command: 1
network: network:

View File

@ -81,8 +81,8 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true

View File

@ -36,7 +36,7 @@ executor:
eval: "globalThis.testingReplication = true;" eval: "globalThis.testingReplication = true;"
global_vars: global_vars:
TestData: TestData:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
# We don't execute dbHash or oplog consistency checks since there is only a single replica set # We don't execute dbHash or oplog consistency checks since there is only a single replica set
# node. # node.
@ -50,8 +50,8 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true

View File

@ -51,7 +51,7 @@ executor:
await import('jstests/libs/override_methods/implicitly_shard_accessed_collections.js'); await import('jstests/libs/override_methods/implicitly_shard_accessed_collections.js');
global_vars: global_vars:
TestData: TestData:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
hooks: hooks:
# We don't execute dbHash or oplog consistency checks since there is only a single replica set # We don't execute dbHash or oplog consistency checks since there is only a single replica set
# node. # node.
@ -65,9 +65,9 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_shards: 2 num_shards: 2

View File

@ -297,10 +297,10 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
coordinateCommitReturnImmediatelyAfterPersistingDecision: true coordinateCommitReturnImmediatelyAfterPersistingDecision: true
num_rs_nodes_per_shard: 2 num_rs_nodes_per_shard: 2

View File

@ -103,5 +103,5 @@ executor:
global_vars: global_vars:
TestData: TestData:
setParametersMongos: setParametersMongos:
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
nodb: "" nodb: ""

View File

@ -54,9 +54,9 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
num_rs_nodes_per_shard: 1 num_rs_nodes_per_shard: 1

View File

@ -88,11 +88,11 @@ executor:
mongos_options: mongos_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
mongod_options: mongod_options:
set_parameters: set_parameters:
enableTestCommands: 1 enableTestCommands: 1
internalQueryUnifiedWriteExecutor: true featureFlagUnifiedWriteExecutor: true
reshardingMinimumOperationDurationMillis: 0 reshardingMinimumOperationDurationMillis: 0
useBatchedDeletesForRangeDeletion: true useBatchedDeletesForRangeDeletion: true
num_rs_nodes_per_shard: 1 num_rs_nodes_per_shard: 1

View File

@ -567,8 +567,8 @@ buildvariants:
exec_timeout_factor: 1.5 exec_timeout_factor: 1.5
test_flags: >- test_flags: >-
--runAllFeatureFlagTests --runAllFeatureFlagTests
--mongodSetParameters="{internalQueryUnifiedWriteExecutor: true}" --mongodSetParameters="{featureFlagUnifiedWriteExecutor: true}"
--mongosSetParameters="{internalQueryUnifiedWriteExecutor: true}" --mongosSetParameters="{featureFlagUnifiedWriteExecutor: true}"
# For now just unified write executor suites but tasks will be added as development continues. # For now just unified write executor suites but tasks will be added as development continues.
tasks: tasks:
- name: compile_integration_and_test_parallel_stream_TG - name: compile_integration_and_test_parallel_stream_TG

View File

@ -5,11 +5,11 @@ export function isUweEnabled(db) {
return !!assert.commandWorkedOrFailedWithCode( return !!assert.commandWorkedOrFailedWithCode(
db.adminCommand({ db.adminCommand({
getParameter: 1, getParameter: 1,
internalQueryUnifiedWriteExecutor: 1, featureFlagUnifiedWriteExecutor: 1,
}), }),
// Allow the error when the query knob is not present. // Allow the error when the query knob is not present.
ErrorCodes.InvalidOptions, ErrorCodes.InvalidOptions,
).internalQueryUnifiedWriteExecutor; ).featureFlagUnifiedWriteExecutor;
} }
/** /**

View File

@ -68,7 +68,6 @@ const expectedParamDefaults = {
internalQueryDisablePlanCache: false, internalQueryDisablePlanCache: false,
internalQueryFindCommandBatchSize: 101, internalQueryFindCommandBatchSize: 101,
internalQuerySlotBasedExecutionHashAggIncreasedSpilling: "inDebug", internalQuerySlotBasedExecutionHashAggIncreasedSpilling: "inDebug",
internalQueryUnifiedWriteExecutor: false,
}; };
function assertDefaultParameterValues() { function assertDefaultParameterValues() {
@ -307,9 +306,6 @@ assertSetParameterSucceeds("internalQuerySlotBasedExecutionHashAggIncreasedSpill
assertSetParameterSucceeds("internalQuerySlotBasedExecutionHashAggIncreasedSpilling", "inDebug"); assertSetParameterSucceeds("internalQuerySlotBasedExecutionHashAggIncreasedSpilling", "inDebug");
assertSetParameterFails("internalQuerySlotBasedExecutionHashAggIncreasedSpilling", "random"); assertSetParameterFails("internalQuerySlotBasedExecutionHashAggIncreasedSpilling", "random");
assertSetParameterSucceeds("internalQueryUnifiedWriteExecutor", true);
assertSetParameterSucceeds("internalQueryUnifiedWriteExecutor", false);
assertSetParameterSucceeds("internalOrStageMaxMemoryBytes", 11); assertSetParameterSucceeds("internalOrStageMaxMemoryBytes", 11);
assertSetParameterFails("internalOrStageMaxMemoryBytes", 0); assertSetParameterFails("internalOrStageMaxMemoryBytes", 0);
assertSetParameterFails("internalOrStageMaxMemoryBytes", -1); assertSetParameterFails("internalOrStageMaxMemoryBytes", -1);

View File

@ -88,9 +88,9 @@ TEST_F(SessionsCollectionShardedTest, RefreshOneSessionOKTest) {
// Set up routing table for the logical sessions collection. // Set up routing table for the logical sessions collection.
loadRoutingTableWithTwoChunksAndTwoShardsImpl(NamespaceString::kLogicalSessionsNamespace, loadRoutingTableWithTwoChunksAndTwoShardsImpl(NamespaceString::kLogicalSessionsNamespace,
BSON("_id" << 1)); BSON("_id" << 1));
for (auto uweKnobValue : {false, true}) { for (auto uweFlag : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweFlag);
auto future = launchAsync([&] { auto future = launchAsync([&] {
auto now = Date_t::now(); auto now = Date_t::now();
auto thePast = now - Minutes(5); auto thePast = now - Minutes(5);
@ -100,7 +100,7 @@ TEST_F(SessionsCollectionShardedTest, RefreshOneSessionOKTest) {
}); });
onCommandForPoolExecutor([&](const RemoteCommandRequest& request) { onCommandForPoolExecutor([&](const RemoteCommandRequest& request) {
if (internalQueryUnifiedWriteExecutor.load()) { if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
BulkWriteCommandReply reply( BulkWriteCommandReply reply(
BulkWriteCommandResponseCursor(0, BulkWriteCommandResponseCursor(0,
{BulkWriteReplyItem{0, Status::OK()}}, {BulkWriteReplyItem{0, Status::OK()}},
@ -173,9 +173,9 @@ TEST_F(SessionsCollectionShardedTest, RefreshOneSessionWriteErrTest) {
// Set up routing table for the logical sessions collection. // Set up routing table for the logical sessions collection.
loadRoutingTableWithTwoChunksAndTwoShardsImpl(NamespaceString::kLogicalSessionsNamespace, loadRoutingTableWithTwoChunksAndTwoShardsImpl(NamespaceString::kLogicalSessionsNamespace,
BSON("_id" << 1)); BSON("_id" << 1));
for (auto uweKnobValue : {false, true}) { for (auto uweFlag : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweFlag);
auto future = launchAsync([&] { auto future = launchAsync([&] {
auto now = Date_t::now(); auto now = Date_t::now();
@ -186,7 +186,7 @@ TEST_F(SessionsCollectionShardedTest, RefreshOneSessionWriteErrTest) {
}); });
onCommandForPoolExecutor([&](const RemoteCommandRequest& request) { onCommandForPoolExecutor([&](const RemoteCommandRequest& request) {
if (internalQueryUnifiedWriteExecutor.load()) { if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
BulkWriteCommandReply reply( BulkWriteCommandReply reply(
BulkWriteCommandResponseCursor( BulkWriteCommandResponseCursor(
0, 0,
@ -219,17 +219,16 @@ TEST_F(SessionsCollectionShardedTest, RemoveOneSessionOKTest) {
loadRoutingTableWithTwoChunksAndTwoShardsImpl(NamespaceString::kLogicalSessionsNamespace, loadRoutingTableWithTwoChunksAndTwoShardsImpl(NamespaceString::kLogicalSessionsNamespace,
BSON("_id" << 1)); BSON("_id" << 1));
for (auto uweKnobValue : {false, true}) { for (auto uweFlag : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweFlag);
auto future = launchAsync([&] { auto future = launchAsync([&] {
_collection.removeRecords(operationContext(), {makeLogicalSessionIdForTest()}); _collection.removeRecords(operationContext(), {makeLogicalSessionIdForTest()});
}); });
onCommandForPoolExecutor([&](const RemoteCommandRequest& request) { onCommandForPoolExecutor([&](const RemoteCommandRequest& request) {
// TODO lol if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
if (internalQueryUnifiedWriteExecutor.load()) {
BulkWriteCommandReply reply( BulkWriteCommandReply reply(
BulkWriteCommandResponseCursor(0, BulkWriteCommandResponseCursor(0,
{BulkWriteReplyItem{0, Status::OK()}}, {BulkWriteReplyItem{0, Status::OK()}},
@ -273,17 +272,16 @@ TEST_F(SessionsCollectionShardedTest, RemoveOneSessionWriteErrTest) {
loadRoutingTableWithTwoChunksAndTwoShardsImpl(NamespaceString::kLogicalSessionsNamespace, loadRoutingTableWithTwoChunksAndTwoShardsImpl(NamespaceString::kLogicalSessionsNamespace,
BSON("_id" << 1)); BSON("_id" << 1));
for (auto uweKnobValue : {false, true}) { for (auto uweFlag : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweFlag);
auto future = launchAsync([&] { auto future = launchAsync([&] {
_collection.removeRecords(operationContext(), {makeLogicalSessionIdForTest()}); _collection.removeRecords(operationContext(), {makeLogicalSessionIdForTest()});
}); });
onCommandForPoolExecutor([&](const RemoteCommandRequest& request) { onCommandForPoolExecutor([&](const RemoteCommandRequest& request) {
// TODO if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
if (internalQueryUnifiedWriteExecutor.load()) {
BulkWriteCommandReply reply( BulkWriteCommandReply reply(
BulkWriteCommandResponseCursor( BulkWriteCommandResponseCursor(
0, 0,

View File

@ -315,3 +315,10 @@ feature_flags:
cpp_varname: gFeatureFlagPathArrayness cpp_varname: gFeatureFlagPathArrayness
fcv_gated: false fcv_gated: false
default: false default: false
featureFlagUnifiedWriteExecutor:
description: "Feature flag to use the unified write executor."
cpp_varname: "gFeatureFlagUnifiedWriteExecutor"
default: false
fcv_gated: false
incremental_rollout_phase: in_development

View File

@ -1667,14 +1667,6 @@ server_parameters:
default: false default: false
redact: false redact: false
internalQueryUnifiedWriteExecutor:
description: "Boolean flag to use the unified write executor."
set_at: [startup, runtime]
cpp_varname: "internalQueryUnifiedWriteExecutor"
cpp_vartype: AtomicWord<bool>
default: false
redact: false
internalQueryGetMoreMaxCursorPinRetryAttempts: internalQueryGetMoreMaxCursorPinRetryAttempts:
description: >- description: >-
Max number of attempts to pin cursor by getMore command before failing in cases where Max number of attempts to pin cursor by getMore command before failing in cases where

View File

@ -95,14 +95,14 @@ protected:
TEST_F(ClusterBulkWriteTest, NoErrors) { TEST_F(ClusterBulkWriteTest, NoErrors) {
RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true); RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true);
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", false); RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor", false);
testNoErrors(kBulkWriteCmdTargeted, kBulkWriteCmdScatterGather); testNoErrors(kBulkWriteCmdTargeted, kBulkWriteCmdScatterGather);
} }
TEST_F(ClusterBulkWriteTest, AttachesAtClusterTimeForSnapshotReadConcern) { TEST_F(ClusterBulkWriteTest, AttachesAtClusterTimeForSnapshotReadConcern) {
RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true); RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true);
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", false); RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor", false);
testAttachesAtClusterTimeForSnapshotReadConcern(kBulkWriteCmdTargeted, testAttachesAtClusterTimeForSnapshotReadConcern(kBulkWriteCmdTargeted,
kBulkWriteCmdScatterGather); kBulkWriteCmdScatterGather);
@ -110,14 +110,14 @@ TEST_F(ClusterBulkWriteTest, AttachesAtClusterTimeForSnapshotReadConcern) {
TEST_F(ClusterBulkWriteTest, SnapshotReadConcernWithAfterClusterTime) { TEST_F(ClusterBulkWriteTest, SnapshotReadConcernWithAfterClusterTime) {
RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true); RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true);
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", false); RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor", false);
testSnapshotReadConcernWithAfterClusterTime(kBulkWriteCmdTargeted, kBulkWriteCmdScatterGather); testSnapshotReadConcernWithAfterClusterTime(kBulkWriteCmdTargeted, kBulkWriteCmdScatterGather);
} }
TEST_F(ClusterBulkWriteTest, FireAndForgetRequestGetsReplyWithOnlyOkStatus) { TEST_F(ClusterBulkWriteTest, FireAndForgetRequestGetsReplyWithOnlyOkStatus) {
RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true); RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true);
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", false); RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor", false);
auto asFireAndForgetRequest = [](const BSONObj& cmdObj) { auto asFireAndForgetRequest = [](const BSONObj& cmdObj) {
BSONObjBuilder bob(cmdObj); BSONObjBuilder bob(cmdObj);

View File

@ -95,14 +95,14 @@ protected:
TEST_F(ClusterBulkWriteUWETest, NoErrors) { TEST_F(ClusterBulkWriteUWETest, NoErrors) {
RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true); RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true);
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", true); RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor", true);
testNoErrors(kBulkWriteCmdTargeted, kBulkWriteCmdScatterGather); testNoErrors(kBulkWriteCmdTargeted, kBulkWriteCmdScatterGather);
} }
TEST_F(ClusterBulkWriteUWETest, AttachesAtClusterTimeForSnapshotReadConcern) { TEST_F(ClusterBulkWriteUWETest, AttachesAtClusterTimeForSnapshotReadConcern) {
RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true); RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true);
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", true); RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor", true);
testAttachesAtClusterTimeForSnapshotReadConcern(kBulkWriteCmdTargeted, testAttachesAtClusterTimeForSnapshotReadConcern(kBulkWriteCmdTargeted,
kBulkWriteCmdScatterGather); kBulkWriteCmdScatterGather);
@ -110,14 +110,14 @@ TEST_F(ClusterBulkWriteUWETest, AttachesAtClusterTimeForSnapshotReadConcern) {
TEST_F(ClusterBulkWriteUWETest, SnapshotReadConcernWithAfterClusterTime) { TEST_F(ClusterBulkWriteUWETest, SnapshotReadConcernWithAfterClusterTime) {
RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true); RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true);
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", true); RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor", true);
testSnapshotReadConcernWithAfterClusterTime(kBulkWriteCmdTargeted, kBulkWriteCmdScatterGather); testSnapshotReadConcernWithAfterClusterTime(kBulkWriteCmdTargeted, kBulkWriteCmdScatterGather);
} }
TEST_F(ClusterBulkWriteUWETest, FireAndForgetRequestGetsReplyWithOnlyOkStatus) { TEST_F(ClusterBulkWriteUWETest, FireAndForgetRequestGetsReplyWithOnlyOkStatus) {
RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true); RAIIServerParameterControllerForTest controller("featureFlagBulkWriteCommand", true);
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", true); RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor", true);
auto asFireAndForgetRequest = [](const BSONObj& cmdObj) { auto asFireAndForgetRequest = [](const BSONObj& cmdObj) {
BSONObjBuilder bob(cmdObj); BSONObjBuilder bob(cmdObj);

View File

@ -59,7 +59,7 @@ protected:
void expectInspectRequest(int shardIndex, InspectionCallback cb) override { void expectInspectRequest(int shardIndex, InspectionCallback cb) override {
onCommandForPoolExecutor([&](const executor::RemoteCommandRequest& request) { onCommandForPoolExecutor([&](const executor::RemoteCommandRequest& request) {
if (internalQueryUnifiedWriteExecutor.load()) { if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
cb(request); cb(request);
BulkWriteCommandReply reply( BulkWriteCommandReply reply(
BulkWriteCommandResponseCursor(0, {BulkWriteReplyItem{0, Status::OK()}}, kNss), BulkWriteCommandResponseCursor(0, {BulkWriteReplyItem{0, Status::OK()}}, kNss),
@ -87,7 +87,7 @@ protected:
void expectReturnsSuccess(int shardIndex) override { void expectReturnsSuccess(int shardIndex) override {
onCommandForPoolExecutor([this, shardIndex](const executor::RemoteCommandRequest& request) { onCommandForPoolExecutor([this, shardIndex](const executor::RemoteCommandRequest& request) {
if (internalQueryUnifiedWriteExecutor.load()) { if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
BulkWriteCommandReply reply( BulkWriteCommandReply reply(
BulkWriteCommandResponseCursor(0, {BulkWriteReplyItem{0, Status::OK()}}, kNss), BulkWriteCommandResponseCursor(0, {BulkWriteReplyItem{0, Status::OK()}}, kNss),
0, 0,
@ -113,7 +113,7 @@ protected:
TEST_F(ClusterDeleteTest, NoErrors) { TEST_F(ClusterDeleteTest, NoErrors) {
for (auto uweKnobValue : {false, true}) { for (auto uweKnobValue : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweKnobValue);
testNoErrors(kDeleteCmdTargeted, kDeleteCmdScatterGather); testNoErrors(kDeleteCmdTargeted, kDeleteCmdScatterGather);
} }
@ -137,7 +137,7 @@ TEST_F(ClusterDeleteTest, CorrectMetrics) {
b.append("command", 0); b.append("command", 0);
const BSONObj obj = b.obj(); const BSONObj obj = b.obj();
for (auto uweKnobValue : {false, true}) { for (auto uweKnobValue : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweKnobValue);
testOpcountersAreCorrect(kDeleteCmdTargeted, /* expectedValue */ obj); testOpcountersAreCorrect(kDeleteCmdTargeted, /* expectedValue */ obj);
} }

View File

@ -58,7 +58,7 @@ protected:
void expectInspectRequest(int shardIndex, InspectionCallback cb) override { void expectInspectRequest(int shardIndex, InspectionCallback cb) override {
onCommandForPoolExecutor([&](const executor::RemoteCommandRequest& request) { onCommandForPoolExecutor([&](const executor::RemoteCommandRequest& request) {
if (internalQueryUnifiedWriteExecutor.load()) { if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
cb(request); cb(request);
BulkWriteReplyItem item(0, Status::OK()); BulkWriteReplyItem item(0, Status::OK());
item.setN(1); item.setN(1);
@ -82,7 +82,7 @@ protected:
void expectReturnsSuccess(int shardIndex) override { void expectReturnsSuccess(int shardIndex) override {
onCommandForPoolExecutor([this, shardIndex](const executor::RemoteCommandRequest& request) { onCommandForPoolExecutor([this, shardIndex](const executor::RemoteCommandRequest& request) {
if (internalQueryUnifiedWriteExecutor.load()) { if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
auto cmd = request.cmdObj; auto cmd = request.cmdObj;
auto ops = cmd["ops"].Array(); auto ops = cmd["ops"].Array();
auto size = ops.size(); auto size = ops.size();
@ -112,7 +112,7 @@ protected:
TEST_F(ClusterInsertTest, NoErrors) { TEST_F(ClusterInsertTest, NoErrors) {
for (auto uweKnobValue : {false, true}) { for (auto uweKnobValue : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweKnobValue);
testNoErrors(kInsertCmdTargeted, kInsertCmdScatterGather); testNoErrors(kInsertCmdTargeted, kInsertCmdScatterGather);
} }
@ -138,7 +138,7 @@ TEST_F(ClusterInsertTest, CorrectMetricsSingleInsert) {
const BSONObj obj = b.obj(); const BSONObj obj = b.obj();
for (auto uweKnobValue : {false, true}) { for (auto uweKnobValue : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweKnobValue);
testOpcountersAreCorrect(kInsertCmdTargeted, /* expectedValue */ obj); testOpcountersAreCorrect(kInsertCmdTargeted, /* expectedValue */ obj);
} }
@ -158,7 +158,7 @@ TEST_F(ClusterInsertTest, CorrectMetricsBulkInsert) {
const BSONObj obj = b.obj(); const BSONObj obj = b.obj();
for (auto uweKnobValue : {false, true}) { for (auto uweKnobValue : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweKnobValue);
testOpcountersAreCorrect(bulkInsertCmd, /* expectedValue */ obj); testOpcountersAreCorrect(bulkInsertCmd, /* expectedValue */ obj);
} }

View File

@ -59,7 +59,7 @@ protected:
void expectInspectRequest(int shardIndex, InspectionCallback cb) override { void expectInspectRequest(int shardIndex, InspectionCallback cb) override {
onCommandForPoolExecutor([&](const executor::RemoteCommandRequest& request) { onCommandForPoolExecutor([&](const executor::RemoteCommandRequest& request) {
if (internalQueryUnifiedWriteExecutor.load()) { if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
cb(request); cb(request);
BulkWriteCommandReply reply( BulkWriteCommandReply reply(
BulkWriteCommandResponseCursor(0, {BulkWriteReplyItem{0, Status::OK()}}, kNss), BulkWriteCommandResponseCursor(0, {BulkWriteReplyItem{0, Status::OK()}}, kNss),
@ -90,7 +90,7 @@ protected:
void expectReturnsSuccess(int shardIndex) override { void expectReturnsSuccess(int shardIndex) override {
onCommandForPoolExecutor([this, shardIndex](const executor::RemoteCommandRequest& request) { onCommandForPoolExecutor([this, shardIndex](const executor::RemoteCommandRequest& request) {
if (internalQueryUnifiedWriteExecutor.load()) { if (feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled()) {
BulkWriteCommandReply reply( BulkWriteCommandReply reply(
BulkWriteCommandResponseCursor(0, {BulkWriteReplyItem{0, Status::OK()}}, kNss), BulkWriteCommandResponseCursor(0, {BulkWriteReplyItem{0, Status::OK()}}, kNss),
0, 0,
@ -120,7 +120,7 @@ protected:
TEST_F(ClusterUpdateTest, NoErrors) { TEST_F(ClusterUpdateTest, NoErrors) {
for (auto uweKnobValue : {false, true}) { for (auto uweKnobValue : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweKnobValue);
testNoErrors(kUpdateCmdTargeted, kUpdateCmdScatterGather); testNoErrors(kUpdateCmdTargeted, kUpdateCmdScatterGather);
} }
@ -145,7 +145,7 @@ TEST_F(ClusterUpdateTest, CorrectMetrics) {
const BSONObj obj = b.obj(); const BSONObj obj = b.obj();
for (auto uweKnobValue : {false, true}) { for (auto uweKnobValue : {false, true}) {
RAIIServerParameterControllerForTest uweController("internalQueryUnifiedWriteExecutor", RAIIServerParameterControllerForTest uweController("featureFlagUnifiedWriteExecutor",
uweKnobValue); uweKnobValue);
testOpcountersAreCorrect(kUpdateCmdTargeted, /* expectedValue */ obj); testOpcountersAreCorrect(kUpdateCmdTargeted, /* expectedValue */ obj);
} }

View File

@ -146,9 +146,8 @@ FindAndModifyCommandResponse findAndModify(OperationContext* opCtx,
executeWriteCommand(opCtx, WriteCommandRef{request}, originalCommand)); executeWriteCommand(opCtx, WriteCommandRef{request}, originalCommand));
} }
// TODO SERVER-106306: Convert the knob below to an IFR flag.
bool isEnabled(OperationContext* opCtx) { bool isEnabled(OperationContext* opCtx) {
return internalQueryUnifiedWriteExecutor.load(); return feature_flags::gFeatureFlagUnifiedWriteExecutor.checkEnabled();
} }
} // namespace unified_write_executor } // namespace unified_write_executor