Ivan Bessonov created IGNITE-25041: -------------------------------------- Summary: Support configuration deletion Key: IGNITE-25041 URL: https://issues.apache.org/jira/browse/IGNITE-25041 Project: Ignite Issue Type: Improvement Reporter: Ivan Bessonov
h3. Problem There are instances where a configuration has been introduced to the released version of Ignite, that doesn't really need to be there. Having an unused configuration value is a bad idea. If we simply delete it from the code, we'll fail while parsing the configuration of already existing node/cluster after the upgrade. h3. Solution When we read/receive configuration values from a "configuration storage", we should have an additional phase of filtering-out the "junk". How are we going to do that: * Each {{ConfigurationModule}} should provide a list of configuration templates, deemed {_}"deleted"{_}. ** Or it could be a hard-coded list in "Gradle configuration module" itself, but that would make testing more complicated, so I don't like this idea * Each template should look like a following string: ** {{ignite.my.deleted.property}} - for regular deleted properties ** {{ignite.list.*.deletedProperty}} - for named list elements. Arbitrarily nested named lists should be supported * Upon encountering a configuration name that fits the description, we should ignore it. * We should keep in mind, that in general these templates describe prefixes, not individual configurations. We might ignore the entire configuration sub-tree if that's what we have deleted. * When saving the configuration back into the storage, we should transparently delete all ignored properties that we have read. h3. Testing Testing should involve all implementations of configuration storages, and multiple classes of configuration schemas that would emulate and "upgrade" with the changed schema. In these tests the only difference would be a "part of configuration is deleted". All combinations of deleted properties should be tested: * Individual property * Regular sub-tree * Sub-tree that contained a named list * Individual property somewhere inside of a named list * Maybe some nested named lists -- This message was sent by Atlassian Jira (v8.20.10#820010)