[
https://issues.apache.org/jira/browse/IGNITE-15285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17399664#comment-17399664
]
Ivan Bessonov commented on IGNITE-15285:
----------------------------------------
[[email protected]] looks good, thank you for the contribution!
> Properly split two ConfigurationManager instances
> -------------------------------------------------
>
> Key: IGNITE-15285
> URL: https://issues.apache.org/jira/browse/IGNITE-15285
> Project: Ignite
> Issue Type: Improvement
> Affects Versions: 3.0.0-alpha2
> Reporter: Ivan Bessonov
> Assignee: Kirill Tkalenko
> Priority: Major
> Labels: iep-55, ignite-3
> Fix For: 3.0.0-alpha3
>
> Time Spent: 1h 10m
> Remaining Estimate: 0h
>
> 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:
> {code:java}
> cfgStorages.add(new DistributedConfigurationStorage(metaStorageMgr,
> vaultMgr));
> {code}
> 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.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)