When we discontinue or remove a feature from WiredTiger, we cannot also remove any associated config values from the metadata, as it causes issues with upgrade and downgrade. See, for example
Today there are about a dozen of these obsolete config options in api_data.py, which we are carrying forward for backward compatibility. Over time, it seems inevitable that the number of these options will increase.
I'm creating this ticket as a suggestion for that we implement this capability and to provide a place to discuss whether and how we might do it. It might turn out to be more than a single ticket of work.
There are at least three ways this obsolete metadata can cause a couple problems:
- Once a config option exists in the metadata, we have to keep it forever in api_data.py. This is only a tiny inconvenience. But if we ever reach a point where that file is full of obsolete entries, it will be more of an issue.
- Obsolete config options often (always?) exist in the WT metadata. So we are storing extra metadata for all of the options we no longer support.
A tangential concern is that the permanent nature of metadata config options interferes with agile development. It means that an experimental or preliminary feature that is not enabled for users may still leave metadata in the metadata file that has to be carried forward indefinitely. We could potentially deal with this in other ways, for example by supporting metadata options that only appear in diagnostic builds.