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)