Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.0.0-alpha2
-
None
Description
Currently you can see "WARNING: Configuration listener has already been set." message on node start. That's not good, it means that one of configuration managers reuses the same storages and it doesn't work. It's a bad design and leads to weird bugs and unpredictable system behavior.
The reason is this line of code:
cfgStorages.add(new DistributedConfigurationStorage(metaStorageMgr, vaultMgr));
What's need to be done is changing ConfigurationManager constructor so that it only takes one storage, not the list. Such decision will lead to two major consequences:
- REST module will have to deal with two ConfigurationManager instances. It's challenging to understand in advance the exact instance that it should use. Valid behavior should be discussed during implementation.
- Classes like ConfigurationRegistry and ConfigurationChanger operate with collections of storages. They should be refactored.
Validators instances will probably be duplicated in both managers. It's hard to avoid duplication if we don't have ConfigurationManagerFactory or something, but having factory to create two well know instances is an overkill. Anyway, some approaches for deduplication should be discussed during implementation as well.
Attachments
Issue Links
- blocks
-
IGNITE-15306 Change ignite cli command to support separate config commands for node/cluster
- Resolved
- fixes
-
IGNITE-14522 ConfigurationManager refactoring
- Resolved
- links to