IGNITE-28711 Introduced IgniteFeature related data structures#13195
IGNITE-28711 Introduced IgniteFeature related data structures#13195petrov-mg wants to merge 2 commits into
Conversation
78401cf to
2772ce5
Compare
| private volatile boolean isNodeFenceActive; | ||
|
|
||
| /** Pair with current and target versions. {@code null} when rolling upgrade is disabled. */ | ||
| @Nullable private volatile IgnitePair<IgniteProductVersion> rollUpVers; | ||
| /** */ | ||
| private volatile boolean isVersionUpgradeEnabled; |
There was a problem hiding this comment.
Should we keep these two fields in metastorage to restore them in persistence mode after full restart of cluster?
| @Override public @Nullable IgniteNodeValidationResult validateNode(ClusterNode node) { | ||
| synchronized (lock) { | ||
| lastJoiningNode = node; | ||
| joiningNodes.add(joiningNode); |
There was a problem hiding this comment.
The problem is that a joining node may leave the cluster without producing any discovery event.
See org.apache.ignite.spi.discovery.tcp.ServerImpl.RingMessageWorker#processJoinRequestMessage, around lines 4522-4595:
err = spi.getSpiContext().validateNode(node);
...
if (!Objects.equals(locMarsh, rmtMarsh)) {
...
// Send message "Local node's marshaller differs from remote node's marshaller"
trySendMessageDirectly(node, new TcpDiscoveryCheckFailedMessage(locNodeId, sndMsg));
return;
}In this path the node has already passed component validation, but it is rejected later by TCP discovery checks and never joins the topology. As a result, the coordinator does not receive NODE_JOINED/NODE_LEFT/NODE_FAILED for this node, so it cannot remove it from joiningNodes by listening to discovery events only.
This is why the previous implementation tracked lastJoiningNode and lastJoiningNodeTimestamp. They were needed to eventually forget such abandoned join attempts
| /** Pair with current and target versions. {@code null} when rolling upgrade is disabled. */ | ||
| @Nullable private volatile IgnitePair<IgniteProductVersion> rollUpVers; | ||
| /** */ | ||
| private volatile boolean isVersionUpgradeEnabled; |
There was a problem hiding this comment.
| private volatile boolean isVersionUpgradeEnabled; | |
| private volatile boolean isVerUpgradeEnabled; |
Thank you for submitting the pull request to the Apache Ignite.
In order to streamline the review of the contribution
we ask you to ensure the following steps have been taken:
The Contribution Checklist
The description explains WHAT and WHY was made instead of HOW.
The following pattern must be used:
IGNITE-XXXX Change summarywhereXXXX- number of JIRA issue.(see the Maintainers list)
the
green visaattached to the JIRA ticket (see tabPR Checkat TC.Bot - Instance 1 or TC.Bot - Instance 2)Notes
If you need any help, please email dev@ignite.apache.org or ask anу advice on http://asf.slack.com #ignite channel.