[ https://issues.apache.org/jira/browse/IGNITE-19104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17715011#comment-17715011 ]
Sergey Uttsel commented on IGNITE-19104: ---------------------------------------- The bug was fixed in https://issues.apache.org/jira/browse/IGNITE-18756 . TODO in a code was fixed and removed in https://issues.apache.org/jira/browse/IGNITE-19105 . > 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 > Priority: Major > Labels: ignite-3 > 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)