wiredtiger_open should union extensions= across config layers instead of shadowing

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Storage Engines - Foundations
    • 617.885
    • None
    • None

      `WiredTiger.basecfg` is supposed to replay the configuration recorded at `wiredtiger_open` time on every subsequent open. For most keys this works correctly. For `extensions=[...]` specifically, the list is silently shadowed: any `extensions=` value in a higher-precedence config layer completely replaces basecfg's list rather than merging with it.

      Repro (3 steps):

      1. Open with `extensions=[lz4, key_provider]` — basecfg records both.
      2. Reopen with `extensions=[key_provider]` only — `wiredtiger_open` returns success.
      3. Open an lz4-compressed table — EINVAL: "unknown compressor 'lz4'".

      Root cause:
      `_wti_config_get` walks config layers highest-to-lowest and returns the first match. For `WT_CONFIG_ITEM_STRUCT` keys (parens), `_wt_config_merge` does recursive field-by-field merging. `extensions=[...]` is a list (brackets), so it hits the "first match wins" leaf path instead.

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Jie Chen
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: