[ 
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)

Reply via email to