[
https://issues.apache.org/jira/browse/IGNITE-22119?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mirza Aliev updated IGNITE-22119:
---------------------------------
Description:
h3. Motivation
After https://issues.apache.org/jira/browse/IGNITE-22071 is implemented, there
is a couple of places where we explicitly start components for the test
purposes, so node could start only needed components. In that code, we have
some common pattern like
{code:java}
for (IgniteComponent component : otherComponents) {
component.start();
components.add(component);
} {code}
In the review phase of https://issues.apache.org/jira/browse/IGNITE-22071 it
was proposed to wait here for component to be started.
The problems is that in the common node start you have to call
{{{}metaStorageMgr.notifyRevisionUpdateListenerOnStart(){}}}, so some
components (like {{DistributionZoneManager }}could proceed with its logic,
because it waits for some VersionedValues)
{code:java}
CompletableFuture<Void> startupConfigurationUpdate =
notifyConfigurationListeners();
CompletableFuture<Void> startupRevisionUpdate =
metaStorageMgr.notifyRevisionUpdateListenerOnStart();
return CompletableFuture.allOf(startupConfigurationUpdate,
startupRevisionUpdate, startFuture) {code}
but in this partial node you wait for node to be started without calling
{{{}notifyRevisionUpdateListenerOnStart{}}}, so it can't start. At lease this
is the root cause for {{{}ItIgniteDistributionZoneManagerNodeRestartTest{}}}. I
bet the problem is the same for {{ItIgniteNodeRestartTest}}
h3. Definition of done
Fix {{ItIgniteNodeRestartTest}} and
{{ItIgniteDistributionZoneManagerNodeRestartTest}} partial node starts, so
async start of components is actually waited.
was:
h3. Motivation
After https://issues.apache.org/jira/browse/IGNITE-22071 is implemented, there
is a couple of places where we explicitly start components for the test
purposes, so node could start only needed components. In that code, we have
some common pattern like
{code:java}
for (IgniteComponent component : otherComponents) {
component.start();
components.add(component);
} {code}
In the review phase of https://issues.apache.org/jira/browse/IGNITE-22071 it
was proposed to wait here for component to be started.
The problems is that in the common node start you have to call
{{{}metaStorageMgr.notifyRevisionUpdateListenerOnStart(){}}}, so some
components (like {{DistributionZoneManager }}could proceed with its logic,
because it waits for some VersionedValues)
{code:java}
CompletableFuture<Void> startupConfigurationUpdate =
notifyConfigurationListeners();
CompletableFuture<Void> startupRevisionUpdate =
metaStorageMgr.notifyRevisionUpdateListenerOnStart();
return CompletableFuture.allOf(startupConfigurationUpdate,
startupRevisionUpdate, startFuture) {code}
but in this partial node you wait for node to be started without calling
{{{}notifyRevisionUpdateListenerOnStart{}}}, so it can't start. At lease this
is the root cause for {{{}ItIgniteDistributionZoneManagerNodeRestartTest{}}}. I
bet the problem is the same for {{ItIgniteNodeRestartTest}}
h3. Definition of done
Fix ItIgniteNodeRestartTest and ItIgniteDistributionZoneManagerNodeRestartTest
partial node starts, so async start of components is actually waited.
> Fix start of partial nodes from ItIgniteNodeRestartTest and
> ItIgniteDistributionZoneManagerNodeRestartTest
> ----------------------------------------------------------------------------------------------------------
>
> Key: IGNITE-22119
> URL: https://issues.apache.org/jira/browse/IGNITE-22119
> Project: Ignite
> Issue Type: Improvement
> Reporter: Mirza Aliev
> Priority: Major
> Labels: ignite-3
>
> h3. Motivation
> After https://issues.apache.org/jira/browse/IGNITE-22071 is implemented,
> there is a couple of places where we explicitly start components for the test
> purposes, so node could start only needed components. In that code, we have
> some common pattern like
> {code:java}
> for (IgniteComponent component : otherComponents) {
> component.start();
> components.add(component);
> } {code}
> In the review phase of https://issues.apache.org/jira/browse/IGNITE-22071 it
> was proposed to wait here for component to be started.
> The problems is that in the common node start you have to call
> {{{}metaStorageMgr.notifyRevisionUpdateListenerOnStart(){}}}, so some
> components (like {{DistributionZoneManager }}could proceed with its logic,
> because it waits for some VersionedValues)
>
> {code:java}
> CompletableFuture<Void> startupConfigurationUpdate =
> notifyConfigurationListeners();
> CompletableFuture<Void> startupRevisionUpdate =
> metaStorageMgr.notifyRevisionUpdateListenerOnStart();
> return CompletableFuture.allOf(startupConfigurationUpdate,
> startupRevisionUpdate, startFuture) {code}
> but in this partial node you wait for node to be started without calling
> {{{}notifyRevisionUpdateListenerOnStart{}}}, so it can't start. At lease this
> is the root cause for {{{}ItIgniteDistributionZoneManagerNodeRestartTest{}}}.
> I bet the problem is the same for {{ItIgniteNodeRestartTest}}
> h3. Definition of done
> Fix {{ItIgniteNodeRestartTest}} and
> {{ItIgniteDistributionZoneManagerNodeRestartTest}} partial node starts, so
> async start of components is actually waited.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)