-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Catalog and Routing
-
3
-
🟩 Routing and Topology
-
None
-
None
-
None
-
None
-
None
-
None
Right now, object-type cluster parameters do not all use the same level of IDL strictness.
Parameters defined with non-strict parsing have caused bugs such as SERVER-117009 and SERVER-116411. To mitigate this, we added a check at the setClusterParameter entry point to reject unknown fields up front (implemented in SERVER-117009).
Contrary, parameters defined with strict parsing run into problems when we later need to deprecate or remove fields, since strictness makes it harder to evolve the schema safely over time.
Listing some examples of cluster parameters with non-strict parsing:
- fleCompactionOptions
- fleAllowTotalTagOverheadToExceedBSONLimit
- fleDisableSubstringPreviewParameterLimits
- internalSearchOptions
And some cluster parameters with strict parsing:
- internalVectorSearchStoredSource
- defaultMaxTimeMS
- internalQueryCutoffForSampleFromRandomCursor
- etc.
Additional notes
We cannot simply mark all cluster parameters as strict. If a cluster parameter was previously set with an unknown field while running an older, non-strict binary, then upgrading to a binary that parses that parameter strictly could cause the cluster to crash on startup when it reads the persisted state.
- is related to
-
SERVER-116411 [v8.0] Setting cluster parameter 'fleCompactionOptions' in mixed binary scenarios may last forever when setting an unknown field
-
- Blocked
-
-
SERVER-117009 setClusterParameter silently resets to default when misspelling non-strict cluster parameter fields
-
- Closed
-
- related to
-
SERVER-118758 Enable strict parsing for all cluster parameters once 9.0 branches out
-
- Closed
-