You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Andrey Mashenkov (Jira)" <ji...@apache.org> on 2023/03/23 08:33:00 UTC
[jira] [Created] (IGNITE-19104) Late logicalTopology initialization in DistributionZoneManager
Andrey Mashenkov created IGNITE-19104:
-----------------------------------------
Summary: Late logicalTopology initialization in DistributionZoneManager
Key: IGNITE-19104
URL: https://issues.apache.org/jira/browse/IGNITE-19104
Project: Ignite
Issue Type: Bug
Reporter: Andrey Mashenkov
Fix For: 3.0.0-beta2
DistributionZoneManager run next methods on start
{code:java}
initDataNodesFromVaultManager();
initLogicalTopologyAndVersionInMetaStorageOnStart();
{code}
The first method gets logicalTopology from Vault and try to put it into MetaStorage.
The second one gets logicalTopology from CMG and try to put it into MetaStorage.
Both methods actually asynchronous, because Vault.get() and TopologyService.logicalTopologyOnLeader() are async.
There are 2 issues:
* these methods may run concurrently in separate threads
* we unconditionally rewrite local volatile field 'logicalTopology' in initDataNodesFromVaultManager()
Thus, we may see initial value (empty topology) after DistributionZoneManager.start() finish.
Also, seems, there is a chance to see stale value from Vault, however a new value was got from config, then rewritten by stale value.
DistributionZoneManagerConfigurationChangesTest passes, because test Metastorage initialization happens before the DistributionZoneManagerConfigurationChangesTest starts (in reality, they start in different order),
and because test initialization seems a bit slower than DistributionZoneManagerConfigurationChangesTest.start().
--
This message was sent by Atlassian Jira
(v8.20.10#820010)