[ https://issues.apache.org/jira/browse/IGNITE-23372?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vladimir Steshin updated IGNITE-23372: -------------------------------------- Description: When a node joins a cluster, the coordinator validates it. But the joining node validates the cluster configurations too. The question is when? Look at {code:java} GridComponnent#onGridDataReceived(GridDiscoveryData data) {code} For example, at {code:java} GridClusterStateProcessor#onGridDataReceived {code} or at {code:java} IgniteServiceProcessor#onGridDataReceived {code} They are called in ` {code:java} ServiceImpl#processNodeAddFinishedMessage(TcpDiscoveryNodeAddFinishedMessage msg) {code} after {code:java} spiState = CONNECTED {code} `GridClusterStateProcessor` can fail here. `IgniteServiceProcessor#GridClusterStateProcessor` have to validate received service configurations before deployment and can fail here too (see #IGNITE-23202). It seems weird that node does some validations to joint cluster when it has already joined, actually. This looks like a validation and issued failure at finish of the second stage of a 2-phase commit when every participant has already declared that it is OK and is ready to complete. We should not do any validations with processing of `TcpDiscoveryNodeAddFinishedMessage`. As an idea, processing of `TcpDiscoveryNodeAddedMessage` is a better case. was: When a node joins a cluster, the coordinator validates it. But the joining node validates the cluster configurations too. The question is when? Look at `GridComponnent#onGridDataReceived(GridDiscoveryData data)`. For example, at `GridClusterStateProcessor#onGridDataReceived`, or at `IgniteServiceProcessor#GridClusterStateProcessor#onGridDataReceived`. They are called in `ServiceImpl#processNodeAddFinishedMessage(TcpDiscoveryNodeAddFinishedMessage msg)` after `spiState = CONNECTED;`. `GridClusterStateProcessor` can fail in this method. `IgniteServiceProcessor#GridClusterStateProcessor` have to validate received service configurations before deployment and can fail here too (see #IGNITE-23202). It seems weird that node does some validations to joint cluster when it has already joined, actually. This looks like a validation and issued failure at finish of the second stage of a 2-phase commit when every participant has already declared that it is OK and is ready to complete. We should not do any validations with processing of `TcpDiscoveryNodeAddFinishedMessage`. As an idea, processing of `TcpDiscoveryNodeAddedMessage` is a better case. > Revise validation of received cluster data by a joining node. > ------------------------------------------------------------- > > Key: IGNITE-23372 > URL: https://issues.apache.org/jira/browse/IGNITE-23372 > Project: Ignite > Issue Type: Improvement > Reporter: Vladimir Steshin > Priority: Minor > Labels: ise > > When a node joins a cluster, the coordinator validates it. But the joining > node validates the cluster configurations too. The question is when? Look at > {code:java} > GridComponnent#onGridDataReceived(GridDiscoveryData data) > {code} > For example, at > {code:java} > GridClusterStateProcessor#onGridDataReceived > {code} > or at > {code:java} > IgniteServiceProcessor#onGridDataReceived > {code} > They are called in ` > {code:java} > ServiceImpl#processNodeAddFinishedMessage(TcpDiscoveryNodeAddFinishedMessage > msg) > {code} > after > {code:java} > spiState = CONNECTED > {code} > `GridClusterStateProcessor` can fail here. > `IgniteServiceProcessor#GridClusterStateProcessor` have to validate received > service configurations before deployment and can fail here too (see > #IGNITE-23202). > It seems weird that node does some validations to joint cluster when it has > already joined, actually. This looks like a validation and issued failure at > finish of the second stage of a 2-phase commit when every participant has > already declared that it is OK and is ready to complete. > We should not do any validations with processing of > `TcpDiscoveryNodeAddFinishedMessage`. As an idea, processing of > `TcpDiscoveryNodeAddedMessage` is a better case. -- This message was sent by Atlassian Jira (v8.20.10#820010)