-
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):
- Open with `extensions=[lz4, key_provider]` — basecfg records both.
- Reopen with `extensions=[key_provider]` only — `wiredtiger_open` returns success.
- 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.