mongo/buildscripts/idl/compatibility_rules.yml
Gregory Wlodarek a7a8a7f747 SERVER-123189 Find correct segment after seal transitions (#51864)
GitOrigin-RevId: fdac0c1f358ebf2c0ff31f8ab8d5158b4723c43e
2026-04-15 10:07:52 +00:00

514 lines
24 KiB
YAML

# All keys specified here can be accessed by the idl_check_compatibility.py script.
ALLOW_ANY_TYPE_LIST:
# This list is only used in unit-tests.
- "commandAllowedAnyTypes"
- "commandAllowedAnyTypes-param-anyTypeParam"
- "commandAllowedAnyTypes-reply-anyTypeField"
- "oldTypeBsonAnyAllowList"
- "newTypeBsonAnyAllowList"
- "oldReplyFieldTypeBsonAnyAllowList-reply-oldBsonSerializationTypeAnyReplyField"
- "newReplyFieldTypeBsonAnyAllowList-reply-newBsonSerializationTypeAnyReplyField"
- "oldParamTypeBsonAnyAllowList-param-bsonTypeAnyParam"
- "newParamTypeBsonAnyAllowList-param-bsonTypeAnyParam"
- "commandAllowedAnyTypesWithVariant-reply-anyTypeField"
- "replyFieldTypeBsonAnyWithVariant-reply-bsonSerializationTypeAnyStructField"
- "replyFieldTypeBsonAnyWithVariantWithArray-reply-bsonSerializationTypeAnyStructField"
- "parameterFieldTypeBsonAnyWithVariant-param-bsonSerializationTypeAnyStructField"
- "parameterFieldTypeBsonAnyWithVariantWithArray-param-bsonSerializationTypeAnyStructField"
- "commandTypeBsonAnyWithVariant"
- "commandTypeBsonAnyWithVariantWithArray"
- "replyFieldCppTypeNotEqual-reply-cppTypeNotEqualReplyField"
- "commandCppTypeNotEqual"
- "commandParameterCppTypeNotEqual-param-cppTypeNotEqualParam"
- "replyFieldSerializerNotEqual-reply-serializerNotEqualReplyField"
- "commandSerializerNotEqual"
- "commandParameterSerializerNotEqual-param-serializerNotEqualParam"
- "replyFieldDeserializerNotEqual-reply-deserializerNotEqualReplyField"
- "commandDeserializerNotEqual"
- "commandParameterDeserializerNotEqual-param-deserializerNotEqualParam"
- "newlyAddedReplyFieldTypeBsonAnyAllowed-reply-newlyAddedBsonSerializationTypeAnyReplyField"
- "replyFieldTypeBsonAnyWithVariantUnstable-reply-bsonSerializationTypeWithVariantAnyUnstableReplyField"
- "newlyAddedParamBsonAnyAllowList-param-newlyAddedBsonAnyAllowListParam"
- "newlyAddedTypeFieldBsonAnyAllowList"
- "parameterFieldTypeBsonAnyWithVariantUnstable-param-bsonSerializationTypeAnyStructField"
- "commandTypeBsonAnyWithVariantUnstable"
- "commandParameterCppTypeNotEqualUnstable-param-cppTypeNotEqualParam"
- "replyFieldCppTypeNotEqualUnstable-reply-cppTypeNotEqualReplyUnstableField"
- "commandCppTypeNotEqualUnstable"
- "commandParameterSerializerNotEqualUnstable-param-serializerNotEqualParam"
- "replyFieldSerializerNotEqualUnstable-reply-serializerNotEqualReplyUnstableField"
- "commandSerializerNotEqualUnstable"
- "commandParameterDeserializerNotEqualUnstable-param-deserializerNotEqualParam"
- "replyFieldDeserializerNotEqualUnstable-reply-deserializerNotEqualReplyUnstableField"
- "commandDeserializerNotEqualUnstable"
- "create-param-backwards"
- "saslStart-param-payload"
- "saslStart-param-payload"
- "saslStart-reply-payload"
- "saslContinue-param-payload"
- "saslContinue-reply-payload"
# These commands (aggregate, find, update, delete, findAndModify, explain) might contain some
# fields with type `any`. Currently, it's not possible to avoid the `any` type in those cases.
# Instead, here are the preventive measures in-place to catch unintentional breaking changes:
# 1- Added comments on top of custom serializers/deserializers (related to these fields) to
# let the future developers know that their modifications to these methods might lead to
# a breaking change in the API.
# 2- Added proper unit-tests to catch accidental changes to the custom serializers/deserializers
# by over-fitting on the current implementation of these custom serializers/deserializers.
# 3- Added further checks to the current script (idl_check_compatibility.py) to check for
# changing a custom serializer/deserializer and considering it as a potential breaking
# change.
- "aggregate-param-pipeline"
- "aggregate-param-explain"
- "aggregate-param-allowDiskUse"
- "aggregate-param-cursor"
- "aggregate-param-hint"
- "aggregate-param-comment"
- "aggregate-param-allowedIndexes"
- "aggregate-param-indexHints"
- "aggregate-param-needsMerge"
- "aggregate-param-fromMongos"
- "aggregate-param-$_requestReshardingResumeToken"
- "aggregate-param-isMapReduceCommand"
- "bulkWrite-param-shardVersion"
- "bulkWrite-reply-_id"
- "bulkWrite-reply-value"
- "count-param-hint"
- "count-param-limit"
- "count-param-maxTimeMS"
- "count-reply-n"
- "find-param-filter"
- "find-param-projection"
- "find-param-sort"
- "find-param-hint"
- "find-param-comment"
- "find-param-allowedIndexes"
- "find-param-indexHints"
- "find-param-collation"
- "find-param-singleBatch"
- "find-param-allowDiskUse"
- "find-param-min"
- "find-param-max"
- "find-param-returnKey"
- "find-param-showRecordId"
- "find-param-$queryOptions"
- "find-param-tailable"
- "find-param-oplogReplay"
- "find-param-noCursorTimeout"
- "find-param-awaitData"
- "find-param-allowPartialResults"
- "find-param-readOnce"
- "find-param-$_requestResumeToken"
- "find-param-$_resumeAfter"
- "find-param-$_startAt"
- "find-param-maxTimeMS"
- "update-param-u"
- "update-param-hint"
- "update-param-upsertSupplied"
- "update-reply-_id"
- "delete-param-limit"
- "delete-param-hint"
- "findAndModify-param-hint"
- "findAndModify-param-update"
- "findAndModify-reply-upserted"
- "insert-reply-opTime"
- "update-reply-opTime"
- "delete-reply-opTime"
- "aggregate-reply-partialResultsReturned"
- "aggregate-reply-invalidated"
- "find-reply-partialResultsReturned"
- "find-reply-invalidated"
- "getMore-reply-partialResultsReturned"
- "getMore-reply-invalidated"
- "listDatabasesForAllTenants-reply-tenant"
- "create-param-min"
- "create-param-max"
- "bulkWrite-param-updateMods"
- "bulkWrite-param-hint"
# No actual user-facing difference
- "bulkWrite-reply-opTime"
- "getMore-param-lastKnownCommittedOpTime"
- "hello-reply-opTime"
- "hello-reply-majorityOpTime"
# Permit the cpp type of a parameter to change
ALLOW_CPP_TYPE_CHANGE_LIST:
# maxTimeMS has been widened for consistency with
# equivalent params for other commands (aggregate)
- "find-param-maxTimeMS-std::int32_t-std::int64_t"
- "count-param-maxTimeMS-std::int32_t-std::int64_t"
- "aggregate-param-explain-mongo::ExplainOptions::Verbosity-bool"
ALLOWED_NEW_COMPLEX_ACCESS_CHECKS:
# Do not add any command other the aggregate command or any access check that is not required
# only by an aggregation stage not present in previously released versions.
aggregate:
# Added in 6.3 due to the new $_analyzeShardKeyReadWriteDistribution stage.
- "check_cursor_session_privilege"
# Added in 8.1 due to the new $_internalListCollections stage.
- "is_authorized_for_any_action_on_any_resource_in_db"
count:
# Added in 8.1 because the count command was changed from a BasicCommand to an IDL
# Typed command. BasicCommands do not perform contract verification at the end of the
# request, but IDL Typed commands do. It turned out that when running the count
# command on a view, the shouldIgnoreAuthChecks() method is called, which previously
# went undetected because of the disabled contract checks.
- "should_ignore_auth_checks"
# The list below is only used in unit-tests.
complexChecksSupersetAllowed:
- "checkTwo"
- "checkThree"
complexChecksSupersetSomeAllowed:
- "checkTwo"
# Once a field is part of the stable API, either by direct addition or by changing it from unstable
# to stable, it cannot removed from the stable API within this API version. Given this impact, we
# want to make sure such changes are always intentional. Therefore, the checker will throw errors
# unless the field is also added to this list below, with which the author ackhowledges they are
# aware of the above implications.
# Additions to this list must be approved by the Stable API PM and code reviewed by the Query Optimization
# team.
ALLOWED_STABLE_FIELDS_LIST:
# This list is only used in unit-tests. These cases modify fields from unstable to stable.
- "oldReplyFieldTypeBsonAnyUnstable-reply-oldBsonSerializationTypeAnyUnstableReplyField"
- "newReplyFieldTypeBsonAnyUnstable-reply-newBsonSerializationTypeAnyUnstableReplyField"
- "replyFieldTypeBsonAnyNotAllowedUnstable-reply-bsonSerializationTypeAnyUnstableReplyField"
- "replyFieldCppTypeNotEqualUnstable-reply-cppTypeNotEqualReplyUnstableField"
- "newReplyFieldStable-reply-stableNewField"
- "importedReplyCommand-reply-stableNewField"
- "newReplyFieldTypeStructRecursiveOne-reply-stableNewField"
- "commandParameterStableRequiredNoDefault-param-newRequiredStableParam"
- "oldCommandParamTypeBsonAnyUnstable-param-bsonTypeAnyUnstableParam"
- "newCommandParamTypeBsonAnyUnstable-param-bsonTypeAnyUnstableParam"
- "commandParamTypeBsonAnyNotAllowedUnstable-param-bsonTypeAnyUnstableParam"
- "commandParameterCppTypeNotEqualUnstable-param-cppTypeNotEqualParam"
- "oldTypeBsonAnyUnstable-param-oldBsonSerializationTypeAnyUnstableStructField"
- "newTypeBsonAnyUnstable-param-newBsonSerializationTypeAnyUnstableStructField"
- "typeBsonAnyNotAllowedUnstable-param-bsonSerializationTypeAnyUnstableStructField"
- "commandCppTypeNotEqualUnstable-param-cppTypeNotEqualStructUnstableField"
- "newlyAddedTypeFieldBsonAnyNotAllowed-param-newlyAddedBsonSerializationTypeAnyStructField"
- "typeWithIncompatibleChainedStruct-param-newBsonSerializationTypeAnyUnstableStructField"
- "addedCommandParameterDefault-param-newStableParameter"
- "addedCommandParameterStable-param-newOptionalStableParam"
- "addedCommandParameterStableRequired-param-newStableParam"
- "addedCommandParameterStableWithDefault-param-newStableParamWithDefault"
- "newCommandParameterTypeStructRecursiveOne-param-unstableToStableOptionalField"
- "oldUnstableParamTypeChanges-param-oldUnstableTypeChangesParam"
- "oldUnstableTypeChanges-param-oldUnstableTypeChangesField"
- "newTypeFieldStableOptional-param-stableOptionalTypeField"
- "newTypeFieldStableWithDefault-param-stableWithDefaultTypeField"
# This list is only used in unit-tests. These cases add new fields as stable.
- "newlyAddedReplyFieldTypeBsonAnyNotAllowed-reply-newlyAddedBsonSerializationTypeAnyReplyField"
- "newReplyFieldAdded-reply-addedNewField"
- "replyFieldVariantDifferentStructIgnoreList-reply-fieldOne"
- "replyFieldNonEnumToEnumIgnoreList-reply-replyField"
- "newlyAddedReplyFieldTypeBsonAnyAllowed-reply-newlyAddedBsonSerializationTypeAnyReplyField"
- "newReplyOptionalBool-reply-ok2"
- "commandWithNewArrayTypeParameterAndArrayTypeReply-reply-newArrayTypeField"
- "commandWithNewNestedArrayTypeParameterAndNestedArrayTypeReply-reply-newStructWithArrayTypeField"
- "addedNewReplyFieldMissingUnstableField-reply-missingUnstableFieldAddedNewField"
- "newlyAddedParamBsonAnyNotAllowed-param-newlyAddedBsonAnyNotAllowedParam"
- "addedNewCommandParameterRequired-param-newRequiredParam"
- "newTypeFieldAddedRequired-param-addedRequiredTypeField"
- "arrayCommandParameterTypeError-param-fieldOne"
- "addedNewParameterMissingUnstableField-param-missingUnstableFieldAddedNewParameter"
- "addedNewCommandTypeFieldMissingUnstableField-param-missingUnstableFieldAddedNewField"
- "addedCommandParameter-param-newParameter"
- "newlyAddedParamBsonAnyAllowList-param-newlyAddedBsonAnyAllowListParam"
- "newlyAddedTypeFieldBsonAnyAllowList-param-newlyAddedBsonSerializationTypeAnyStructField"
- "newTypeFieldAddedOptional-param-addedOptionalTypeField"
- "newParameterOptionalBool-param-flag"
- "newCommandTypeOptionalBool-param-ok2"
- "commandWithNewArrayTypeParameterAndArrayTypeReply-param-newArrayTypeParameter"
- "commandWithNewNestedArrayTypeParameterAndNestedArrayTypeReply-param-newNestedArrayTypeParameter"
# Add real use cases for allowed new stable or unstable-to-stable fields after this line.
# Changes relative to 5.0:
- "collMod-param-isTimeseriesNamespace"
- "collMod-param-cappedSize"
- "collMod-param-cappedMax"
- "createIndexes-param-isTimeseriesNamespace"
- "dropIndexes-param-isTimeseriesNamespace"
- "listIndexes-param-isTimeseriesNamespace"
- "listIndexes-reply-clustered"
- "count-reply-n"
- "create-param-encryptedFields"
- "create-param-bucketRoundingSeconds"
- "create-param-temp"
- "renameCollection-param-to"
- "renameCollection-param-dropTarget"
- "renameCollection-param-collectionUUID"
- "endSessions-param-txnNumber"
- "endSessions-param-txnUUID"
- "refreshSessions-param-txnNumber"
- "refreshSessions-param-txnUUID"
- "insert-param-isTimeseriesNamespace"
- "update-param-isTimeseriesNamespace"
- "delete-param-isTimeseriesNamespace"
- "findAndModify-param-stmtId"
- "hello-param-loadBalanced"
- "hello-reply-serviceId"
- "hello-reply-isImplicitDefaultMajorityWC"
- "hello-reply-cwwc"
# BulkWrite fields
- "bulkWrite-param-ops"
- "bulkWrite-param-insert"
- "bulkWrite-param-document"
- "bulkWrite-param-update"
- "bulkWrite-param-filter"
- "bulkWrite-param-multi"
- "bulkWrite-param-updateMods"
- "bulkWrite-param-upsert"
- "bulkWrite-param-arrayFilters"
- "bulkWrite-param-hint"
- "bulkWrite-param-collation"
- "bulkWrite-param-delete"
- "bulkWrite-param-collation"
- "bulkWrite-param-nsInfo"
- "bulkWrite-param-ns"
- "bulkWrite-param-cursor"
- "bulkWrite-param-bypassDocumentValidation"
- "bulkWrite-param-constants"
- "bulkWrite-param-ordered"
- "bulkWrite-param-stmtId"
- "bulkWrite-param-stmtIds"
- "bulkWrite-param-let"
- "bulkWrite-param-errorsOnly"
- "bulkWrite-reply-cursor"
- "bulkWrite-reply-id"
- "bulkWrite-reply-firstBatch"
- "bulkWrite-reply-ns"
- "bulkWrite-reply-electionId"
- "bulkWrite-reply-opTime"
- "bulkWrite-reply-nErrors"
- "bulkWrite-reply-nInserted"
- "bulkWrite-reply-nMatched"
- "bulkWrite-reply-nModified"
- "bulkWrite-reply-nUpserted"
- "bulkWrite-reply-nDeleted"
ALLOW_FIELD_VALUE_REMOVAL_LIST:
# This verbosity option was removed in 8.1, but it was never available to users prior to that,
# so it does not represent a real compatiblity change.
explain_param_verbosity_type_Verbosity:
- "kQueryPlannerDebug"
# The 'validated' validation level was renamed to 'constraint' in 9.0, but it was always gated
# behind a feature flag and never available to users prior to that, so it does not represent a
# real compatibility change.
create_param_validationLevel_type_ValidationLevel:
- "validated"
collMod_param_validationLevel_type_ValidationLevel:
- "validated"
CHANGED_ACCESS_CHECKS_TYPE:
# Changed access checks of update command from 'simple' to 'complex' in 8.1.
update:
- "simple"
- "complex"
# Permit a parameter to move from bson serialisation type any
# to a non-any serialisation type.
IGNORE_ANY_TO_NON_ANY_LIST:
# These parameters were type-checked "by hand" previously;
# enforcing this from IDL instead does not narrow the range
# of permitted values
- "find-param-maxTimeMS"
- "count-param-maxTimeMS"
# Do not add commands that were visible to users in previously released versions.
IGNORE_COMMANDS_LIST:
# The following commands were released behind a feature flag in 5.3 but were shelved in
# favor of getClusterParameter and setClusterParameter. Since the feature flag was not enabled
# in 5.3, they were effectively unusable and so can be safely removed from the strict API.
- "getChangeStreamOptions"
- "setChangeStreamOptions"
# Permit a parameter to move from a non-any bson serialisation type to any.
IGNORE_NON_ANY_TO_ANY_LIST:
- "aggregate-param-indexHints"
- "bulkWrite-reply-opTime"
- "find-param-indexHints"
- "getMore-param-lastKnownCommittedOpTime"
- "hello-reply-opTime"
- "hello-reply-majorityOpTime"
# Do not add user visible fields already released in earlier versions.
# We generally don't allow changing a field from stable to unstable, but we permit it in special cases,
# such as when we want to avoid making internal fields part of the stable API.
# Additions to this list must be approved by the Stable API PM and code reviewed by the Query Optimization
# team.
IGNORE_STABLE_TO_UNSTABLE_LIST:
# This list is only used in unit-tests.
- "newReplyFieldUnstableIgnoreList-reply-unstableNewFieldIgnoreList"
- "newTypeFieldUnstableIgnoreList-param-unstableNewFieldIgnoreList"
- "newTypeEnumOrStructIgnoreList-reply-unstableNewFieldIgnoreList"
- "commandParameterUnstableIgnoreList-param-newUnstableParameterIgnoreList"
- "newReplyFieldUnstableOptionalIgnoreList-reply-unstableOptionalNewFieldIgnoreList"
- "newReplyTypeEnumOrStructIgnoreList-reply-newReplyTypeEnumOrStructIgnoreList"
- "newReplyFieldVariantNotSubsetIgnoreList-reply-variantNotSubsetReplyFieldIgnoreList"
- "replyFieldVariantDifferentStructIgnoreList-reply-variantStructRecursiveReplyFieldIgnoreList"
- "replyFieldNonVariantToVariantIgnoreList-reply-nonVariantToVariantReplyFieldIgnoreList"
- "replyFieldNonEnumToEnumIgnoreList-reply-nonEnumToEnumReplyIgnoreList"
- "newUnstableParamTypeChangesIgnoreList-param-newUnstableTypeChangesParamIgnoreList"
- "newUnstableTypeChangesIgnoreList"
- "newUnstableTypeChangesIgnoreList-param-newUnstableTypeChangesFieldIgnoreList"
- "newUnstableReplyFieldTypeChangesIgnoreList-reply-newUnstableTypeChangesReplyFieldIgnoreList"
- "newReplyFieldTypeStructIgnoreList-reply-structReplyField"
- "newReplyFieldTypeStructIgnoreList-reply-unstableNewFieldIgnoreList"
# Real use cases for changing a field from 'stable' to 'unstable'.
- "find-param-maxTimeMS"
- "count-param-maxTimeMS"
# No actual user-facing difference
- "bulkWrite-reply-opTime"
- "hello-reply-opTime"
- "hello-reply-majorityOpTime"
- "find-param-$_startAt"
# Not user-facing. serializer function has simply been renamed
- "find-param-collation"
- "find-param-filter"
- "find-param-projection"
- "find-param-sort"
RENAMED_COMPLEX_ACCESS_CHECKS:
# Changed during 6.1 as part of removing multi-auth support.
get_single_user: "get_authenticated_user"
get_authenticated_usernames: "get_authenticated_username"
get_impersonated_usernames: "get_impersonated_username"
# List of server parameters that have been removed and should not trigger compatibility errors.
# Parameters removed in 8.0 can remain here indefinitely as they're no longer supported.
# Parameters removed in later versions should have associated tickets for documentation/deprecation.
IGNORE_REMOVED_PARAMETERS_LIST:
# Renamed from invalidStartLsn* to readLog* in SERVER-123189.
- "invalidStartLsnMaxRetries"
- "invalidStartLsnRetryDelayMillis"
# Parameters removed between 8.0.18 and 8.2.4, we are assuming these have been removed long enough
# to not cause any problems
# These can be deleted from this list when we no longer check against 8.0 (this should be after we branch 9.0)
# Change streams parameters
- "changeCollectionTruncateMarkersMinBytes"
# TTL parameters
- "ttlCollLowPrioritySubpassLimit"
# Storage engine concurrency parameters (8.0 only)
- "lowPriorityAdmissionBypassThreshold"
# Query optimizer parameters
- "internalQueryPlanEvaluationWorksSbe"
- "internalQueryPlanEvaluationCollFractionSbe"
- "internalQuerySlotBasedExecutionHashAggForceIncreasedSpilling"
- "enableUnionWithVectorSearch"
- "internalQueryCardinalityEstimatorMode"
# Cascades optimizer parameters
- "internalCascadesOptimizerDisableScan"
- "internalCascadesOptimizerDisableIndexes"
- "internalCascadesOptimizerDisableMergeJoinRIDIntersect"
- "internalCascadesOptimizerDisableHashJoinRIDIntersect"
- "internalCascadesOptimizerDisableGroupByAndUnionRIDIntersect"
- "internalCascadesOptimizerDisableSargableWhenNoIndexes"
- "internalCascadesOptimizerFastIndexNullHandling"
- "internalCascadesOptimizerSampleChunks"
- "internalCascadesOptimizerRepeatableSample"
- "internalCascadesOptimizerSampleSizeMin"
- "internalCascadesOptimizerSampleSizeMax"
- "internalCascadesOptimizerSampleIndexedFields"
- "internalCascadesOptimizerSampleTwoFields"
- "internalCascadesOptimizerEnableSqrtSampleSize"
- "internalCascadesOptimizerDisableYieldingTolerantPlans"
- "internalCascadesOptimizerMinIndexEqPrefixes"
- "internalCascadesOptimizerMaxIndexEqPrefixes"
- "internalCascadesOptimizerEnableNotPushdown"
- "internalCascadesOptimizerSamplingCEFallBackForFilterNode"
- "internalCascadesOptimizerDisableFastPath"
- "internalCascadesOptimizerEnableParameterization"
# Column scan parameters
- "internalQueryMaxNumberOfFieldsToChooseUnfilteredColumnScan"
- "internalQueryMaxNumberOfFieldsToChooseFilteredColumnScan"
- "internalCostModelCoefficients"
- "internalQueryColumnScanMinCollectionSizeBytes"
- "internalQueryColumnScanMinAvgDocSizeBytes"
- "internalQueryColumnRowstoreScanMinBatchSize"
- "internalQueryColumnRowstoreScanMaxBatchSize"
- "internalQueryColumnScanMinNumColumnFilters"
# Query execution parameters
- "internalUseRoaringBitmapsForRecordIDDeduplication"
- "deprioritizeUnboundedUserCollectionScans"
- "deprioritizeUnboundedUserIndexScans"
- "internalQueryEnableSbeForNaryExpression"
# Replication parameters
- "forceRollbackViaRefetch"
- "tenantApplierBatchSizeBytes"
- "tenantApplierBatchSizeOps"
- "minOplogEntriesPerThread"
- "tenantApplierThreadCount"
- "tenantMigrationGarbageCollectionDelayMS"
- "tenantMigrationExternalKeysRemovalBufferSecs"
- "tenantMigrationOplogBufferPeekCacheSize"
- "tenantMigrationOplogFetcherBatchSize"
- "maxTenantMigrationRecipientThreadPoolSize"
- "minTenantMigrationRecipientThreadPoolSize"
- "maxTenantMigrationDonorServiceThreadPoolSize"
- "minTenantMigrationDonorServiceThreadPoolSize"
- "importQuorumTimeoutSeconds"
- "maxShardSplitDonorServiceThreadPoolSize"
- "minShardSplitDonorServiceThreadPoolSize"
- "shardSplitTimeoutMS"
- "tenantMigrationBlockingStateTimeoutMS"
- "tenantMigrationDisableX509Auth"
- "tenantMigrationExcludeDonorHostTimeoutMS"
- "shardSplitGarbageCollectionDelayMS"
# Sharding parameters
- "autoMergerMaxTimeProcessingChunksMS:"
- "rangeDeleterHighPriority"
# Global index parameters
- "globalIndexClonerServiceMaxThreadCount"
- "globalIndexClonerServiceFetchBatchMaxSizeBytes"
# Resharding parameters
- "reshardingCollectionClonerBatchSizeInBytes"
- "reshardingOplogFetcherSleepMillis"
# Resource consumption parameters
- "aggregateOperationResourceConsumptionMetrics"
- "profileOperationResourceConsumptionMetrics"
- "documentUnitSizeBytes"
- "indexEntryUnitSizeBytes"
- "totalUnitWriteSizeBytes"
# Storage parameters
- "maintainValidCursorsAcrossSBEReadCommands"
- "maintainValidCursorsAcrossSBEYield"
- "wiredTigerMaxCacheOverflowSizeGB"
# Catalog parameters
- "catalogCacheIndexMaxEntries"
# Scripting parameters
- "disableJavaScriptJIT"
# Service executor parameters
- "initialServiceExecutorUseDedicatedThread"
- "fixedServiceExecutorThreadLimit"
# Parameters removed since 8.2.4
# this was converted to a Incremental Feature Rollout and was locked behind a feature flag
- "internalQueryUnifiedWriteExecutor"
# These parameters were part of an unreleased project and were locked behind a feature flag
- "AbortOldestTransactionSessionCheckoutTimeoutMilliseconds"
- "AbortOldestTransactionSessionKillLimitPerBatch"
- "AbortOldestTransactionMemoryClearLimitPerBatch"
# Idl file was not part of the build graph and was removed in a drive-by code cleanup
- "connectionAcquisitionToWireLoggingRate"
# Confirmed that no atlas clusters had this parameter enabled when it was removed
- "enableTemporarilyUnavailableExceptions"
# Confirmed that no atlas clusters had this parameter enabled when it was removed
- "ShadingTaskExecutorPoolBaseEstablishmentBackoffMS"
- "ShardingTaskExecutorPoolMaxEstablishmentBackoffMS"
# This was a test only parameter.
- "planRankerMode"
# anything added below this comment is added after the initial parameter check was added.
# Please be specic about why this parameter should be removed instead of deprecated.
# Ideally this list should not grow and parameters are not removed.
# We no longer suppport this error path and no atlas clusters have this parameter enabled
- "startLsnTruncatedMaxFailovers"
# TODO(SERVER-123792): Remove this relaxation.
# internalQuery* knobs may be freely removed; they are internal tuning parameters
- "internalQuery.*Test.*"