[ 
https://issues.apache.org/jira/browse/IGNITE-22915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Roman Puchkovskiy updated IGNITE-22915:
---------------------------------------
    Description: 
Currently, during its startup, a node does the following:
 # Validate itself against the CMG leader by sending a JoinRequestCommand to 
the CMG  (upon successful validation it gets added to the ‘validated’ set)
 # Start remaining components
 # Complete join via the CMG leader (after this the node gets added to the 
logical topology)

We need to validate a joining node Metastorage against the ‘cluster’ 
Metastorage state. Join happens via interaction with the CMG, but an MG leader 
is needed for validation. This creates a cyclic dependency between validation 
and the startup of the MG. To avoid this, we split the validation into 2 
phases: basic validation and Metastorage validation.

The part of the startup related to join and Metastorage startup now looks like 
this:
 # Validate itself against the CMG leader only doing basic validations, that 
is, everything except Metastorage (upon successful validation the node gets 
added to the ‘basically_validated’ set) by sending a JoinRequestCommand to the 
CMG
 # Start Metastorage (and wait for it to catch up with the leader and apply 
everything that is committed [this is what is already done during node startup])
 # Validate the Metastorage against the MG leader (in this issue, this is a 
no-op; the actual validation will be done in IGNITE-22916)
 # Record the fact of Metastorage validity in the CMG by sending a 
ValidMetastorageCommand (the node gets added to the ‘fully_validated’ set)
 # Start remaining components
 # Complete join via the CMG leader (after this the node gets added to the 
logical topology)

> Separate join validation to basic and metastorage validation
> ------------------------------------------------------------
>
>                 Key: IGNITE-22915
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22915
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>
> Currently, during its startup, a node does the following:
>  # Validate itself against the CMG leader by sending a JoinRequestCommand to 
> the CMG  (upon successful validation it gets added to the ‘validated’ set)
>  # Start remaining components
>  # Complete join via the CMG leader (after this the node gets added to the 
> logical topology)
> We need to validate a joining node Metastorage against the ‘cluster’ 
> Metastorage state. Join happens via interaction with the CMG, but an MG 
> leader is needed for validation. This creates a cyclic dependency between 
> validation and the startup of the MG. To avoid this, we split the validation 
> into 2 phases: basic validation and Metastorage validation.
> The part of the startup related to join and Metastorage startup now looks 
> like this:
>  # Validate itself against the CMG leader only doing basic validations, that 
> is, everything except Metastorage (upon successful validation the node gets 
> added to the ‘basically_validated’ set) by sending a JoinRequestCommand to 
> the CMG
>  # Start Metastorage (and wait for it to catch up with the leader and apply 
> everything that is committed [this is what is already done during node 
> startup])
>  # Validate the Metastorage against the MG leader (in this issue, this is a 
> no-op; the actual validation will be done in IGNITE-22916)
>  # Record the fact of Metastorage validity in the CMG by sending a 
> ValidMetastorageCommand (the node gets added to the ‘fully_validated’ set)
>  # Start remaining components
>  # Complete join via the CMG leader (after this the node gets added to the 
> logical topology)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to