Source:
@Nullable @Override public IgniteNodeValidationResult validateNode(ClusterNode node, JoiningNodeDiscoveryData discoData) { IgniteNodeValidationResult res = super.validateNode(node, discoData); if (res != null) return res; if (isMasterKeyChangeInProgress()) { return new IgniteNodeValidationResult(ctx.localNodeId(), "Master key change in progress! Node join is rejected. [node=" + node.id() + "]", "Master key change in progress! Node join is rejected."); } if (node.isClient() || node.isDaemon()) return null; res = validateNode(node); if (res != null) return res; NodeEncryptionKeys nodeEncKeys; if (!discoData.hasJoiningNodeData() || (nodeEncKeys = (NodeEncryptionKeys)discoData.joiningNodeData()) == null) { return new IgniteNodeValidationResult(ctx.localNodeId(), "Joining node doesn't have encryption data [node=" + node.id() + "]", "Joining node doesn't have encryption data."); } if (!Arrays.equals(getSpi().masterKeyDigest(), nodeEncKeys.masterKeyDigest)) { return new IgniteNodeValidationResult(ctx.localNodeId(), "Master key digest differs! Node join is rejected. [node=" + node.id() + "]", "Master key digest differs! Node join is rejected."); } if (F.isEmpty(nodeEncKeys.knownKeys)) { U.quietAndInfo(log, "Joining node doesn't have stored group keys [node=" + node.id() + "]"); return null; } for (Map.Entry<Integer, byte[]> entry : nodeEncKeys.knownKeys.entrySet()) { Serializable locEncKey = grpEncKeys.get(entry.getKey()); if (locEncKey == null) continue; Serializable rmtKey = getSpi().decryptKey(entry.getValue()); if (F.eq(locEncKey, rmtKey)) continue; return new IgniteNodeValidationResult(ctx.localNodeId(), "Cache key differs! Node join is rejected. [node=" + node.id() + ", grp=" + entry.getKey() + "]", "Cache key differs! Node join is rejected."); } return null; }

Target:
@Nullable @Override public IgniteNodeValidationResult validateNode(ClusterNode node, JoiningNodeDiscoveryData discoData) { IgniteNodeValidationResult res = super.validateNode(node, discoData); if (res != null) return res; if (isMasterKeyChangeInProgress()) { return new IgniteNodeValidationResult(ctx.localNodeId(), "Master key change is in progress! Node join is rejected. [node=" + node.id() + "]", "Master key change is in progress! Node join is rejected."); } if (node.isClient() || node.isDaemon()) return null; res = validateNode(node); if (res != null) return res; NodeEncryptionKeys nodeEncKeys = (NodeEncryptionKeys)discoData.joiningNodeData(); if (!discoData.hasJoiningNodeData() || nodeEncKeys == null) { return new IgniteNodeValidationResult(ctx.localNodeId(), "Joining node doesn't have encryption data [node=" + node.id() + "]", "Joining node doesn't have encryption data."); } if (!Arrays.equals(getSpi().masterKeyDigest(), nodeEncKeys.masterKeyDigest)) { return new IgniteNodeValidationResult(ctx.localNodeId(), "Master key digest differs! Node join is rejected. [node=" + node.id() + "]", "Master key digest differs! Node join is rejected."); } if (F.isEmpty(nodeEncKeys.knownKeys)) { U.quietAndInfo(log, "Joining node doesn't have stored group keys [node=" + node.id() + "]"); return null; } for (Map.Entry<Integer, byte[]> entry : nodeEncKeys.knownKeys.entrySet()) { Serializable locEncKey = grpEncKeys.get(entry.getKey()); if (locEncKey == null) continue; Serializable rmtKey = getSpi().decryptKey(entry.getValue()); if (F.eq(locEncKey, rmtKey)) continue; return new IgniteNodeValidationResult(ctx.localNodeId(), "Cache key differs! Node join is rejected. [node=" + node.id() + ", grp=" + entry.getKey() + "]", "Cache key differs! Node join is rejected."); } return null; }