Define a consistent way to ensure strict parsing for cluster parameters

XMLWordPrintableJSON

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

            Assignee:
            Unassigned
            Reporter:
            Silvia Surroca
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: