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