From e5207af5400aab0747b14df0bdde591091c29662 Mon Sep 17 00:00:00 2001 From: Dmitry Werner Date: Mon, 30 Mar 2026 10:48:03 +0500 Subject: [PATCH] IGNITE-28396 Remove NodeSpecificData --- .../discovery/DiscoveryMessageFactory.java | 3 - .../tcp/internal/DiscoveryDataPacket.java | 31 +++---- .../tcp/messages/NodeSpecificData.java | 84 ------------------- .../discovery/tcp/TcpDiscoverySelfTest.java | 11 ++- 4 files changed, 15 insertions(+), 114 deletions(-) delete mode 100644 modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/NodeSpecificData.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java index 36c4ae6357f5c..ab454950f87aa 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java @@ -140,8 +140,6 @@ import org.apache.ignite.spi.discovery.tcp.messages.InetAddressMessageSerializer; import org.apache.ignite.spi.discovery.tcp.messages.InetSocketAddressMessage; import org.apache.ignite.spi.discovery.tcp.messages.InetSocketAddressMessageSerializer; -import org.apache.ignite.spi.discovery.tcp.messages.NodeSpecificData; -import org.apache.ignite.spi.discovery.tcp.messages.NodeSpecificDataSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryAuthFailedMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryAuthFailedMessageSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryCacheMetricsMessage; @@ -237,7 +235,6 @@ public DiscoveryMessageFactory(Marshaller marsh, ClassLoader clsLdr) { factory.register((short)-110, QueryField::new, new QueryFieldMarshallableSerializer(marsh, clsLdr)); factory.register((short)-109, User::new, new UserSerializer()); factory.register((short)-108, UserManagementOperation::new, new UserManagementOperationSerializer()); - factory.register((short)-107, NodeSpecificData::new, new NodeSpecificDataSerializer()); factory.register((short)-106, DiscoveryDataPacket::new, new DiscoveryDataPacketSerializer()); factory.register((short)-105, TcpDiscoveryNodeFullMetricsMessage::new, new TcpDiscoveryNodeFullMetricsMessageSerializer()); diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/DiscoveryDataPacket.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/DiscoveryDataPacket.java index b77770a2d1069..6ee076816069d 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/DiscoveryDataPacket.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/DiscoveryDataPacket.java @@ -33,7 +33,6 @@ import org.apache.ignite.marshaller.Marshaller; import org.apache.ignite.plugin.extensions.communication.Message; import org.apache.ignite.spi.discovery.DiscoveryDataBag; -import org.apache.ignite.spi.discovery.tcp.messages.NodeSpecificData; import static org.apache.ignite.internal.GridComponent.DiscoveryDataExchangeType.CONTINUOUS_PROC; @@ -65,7 +64,7 @@ public class DiscoveryDataPacket implements Serializable, Message { /** */ @Order(3) - Map nodeSpecificData = new HashMap<>(); + Map> nodeSpecificData = new HashMap<>(); /** */ private transient boolean joiningNodeClient; @@ -109,7 +108,7 @@ public void marshalGridNodeData(DiscoveryDataBag bag, UUID nodeId, Marshaller ma filterDuplicatedData(marshLocNodeSpecificData); if (!marshLocNodeSpecificData.isEmpty()) - nodeSpecificData.put(nodeId, new NodeSpecificData(marshLocNodeSpecificData)); + nodeSpecificData.put(nodeId, marshLocNodeSpecificData); } } @@ -143,11 +142,8 @@ public DiscoveryDataBag unmarshalGridData( if (nodeSpecificData != null && !nodeSpecificData.isEmpty()) { Map> unmarshNodeSpecData = U.newLinkedHashMap(nodeSpecificData.size()); - for (Map.Entry nodeBinEntry : nodeSpecificData.entrySet()) { - if (nodeBinEntry.getValue() == null) - continue; - - Map nodeBinData = nodeBinEntry.getValue().nodeSpecificData(); + for (Map.Entry> nodeBinEntry : nodeSpecificData.entrySet()) { + Map nodeBinData = nodeBinEntry.getValue(); if (nodeBinData == null || nodeBinData.isEmpty()) continue; @@ -274,17 +270,12 @@ public boolean mergeDataFrom( } if (nodeSpecificData.size() != mrgdSpecifDataKeys.size()) { - for (Map.Entry e : nodeSpecificData.entrySet()) { + for (Map.Entry> e : nodeSpecificData.entrySet()) { if (!mrgdSpecifDataKeys.contains(e.getKey())) { - NodeSpecificData dataMsg = existingDataPacket.nodeSpecificData.get(e.getKey()); - - if (dataMsg == null) - continue; + Map data = existingDataPacket.nodeSpecificData.get(e.getKey()); - Map data = dataMsg.nodeSpecificData(); - - if (data != null && mapsEqual(e.getValue().nodeSpecificData(), data)) { - e.setValue(new NodeSpecificData(data)); + if (data != null && mapsEqual(e.getValue(), data)) { + e.setValue(data); boolean add = mrgdSpecifDataKeys.add(e.getKey()); @@ -428,15 +419,13 @@ private void marshalData( /** */ private void filterDuplicatedData(Map discoData) { - for (NodeSpecificData existingData : nodeSpecificData.values()) { + for (Map existingData : nodeSpecificData.values()) { Iterator> it = discoData.entrySet().iterator(); while (it.hasNext()) { Map.Entry discoDataEntry = it.next(); - byte[] curData = (existingData == null || existingData.nodeSpecificData() == null) - ? null - : existingData.nodeSpecificData().get(discoDataEntry.getKey()); + byte[] curData = existingData.get(discoDataEntry.getKey()); if (Arrays.equals(curData, discoDataEntry.getValue())) it.remove(); diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/NodeSpecificData.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/NodeSpecificData.java deleted file mode 100644 index e6bf73813f5b3..0000000000000 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/NodeSpecificData.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.spi.discovery.tcp.messages; - -import java.io.Serializable; -import java.util.Map; -import java.util.Objects; -import org.apache.ignite.internal.Order; -import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.plugin.extensions.communication.Message; - -/** - * A wrapper message that holds the mapping of discovery data belonging to a cluster node and is sent to the joining node. - */ -public class NodeSpecificData implements Message, Serializable { - /** */ - private static final long serialVersionUID = 0L; - - /** Node specific data. */ - @Order(0) - Map nodeSpecificData; - - /** Constructor. */ - public NodeSpecificData() { - // No-op. - } - - /** - * @param nodeSpecificData Node specific data. - */ - public NodeSpecificData(Map nodeSpecificData) { - this.nodeSpecificData = nodeSpecificData; - } - - /** - * @return Node specific data. - */ - public Map nodeSpecificData() { - return nodeSpecificData; - } - - /** {@inheritDoc} */ - @Override public short directType() { - return -107; - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object o) { - if (this == o) - return true; - - if (o == null || getClass() != o.getClass()) - return false; - - NodeSpecificData that = (NodeSpecificData)o; - - return Objects.equals(nodeSpecificData, that.nodeSpecificData); - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return Objects.hashCode(nodeSpecificData); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(NodeSpecificData.class, this); - } -} diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java index 95494a0bcdb30..8b59eea245057 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java @@ -79,7 +79,6 @@ import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryStatistics; import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; -import org.apache.ignite.spi.discovery.tcp.messages.NodeSpecificData; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryAbstractMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryConnectionCheckMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryCustomEventMessage; @@ -2519,7 +2518,7 @@ private static class TestDiscoveryDataDuplicateSpi extends TcpDiscoverySpi { DiscoveryDataPacket dataPacket = ((TcpDiscoveryNodeAddedMessage)msg).gridDiscoveryData(); if (dataPacket != null) { - Map discoData = U.field(dataPacket, "nodeSpecificData"); + Map> discoData = U.field(dataPacket, "nodeSpecificData"); checkDiscoData(discoData, msg); } @@ -2528,7 +2527,7 @@ else if (msg instanceof TcpDiscoveryNodeAddFinishedMessage) { DiscoveryDataPacket dataPacket = ((TcpDiscoveryNodeAddFinishedMessage)msg).clientDiscoData(); if (dataPacket != null) { - Map discoData = U.field(dataPacket, "nodeSpecificData"); + Map> discoData = U.field(dataPacket, "nodeSpecificData"); checkDiscoData(discoData, msg); } @@ -2541,12 +2540,12 @@ else if (msg instanceof TcpDiscoveryNodeAddFinishedMessage) { * @param discoData Discovery data. * @param msg Message. */ - private void checkDiscoData(Map discoData, TcpDiscoveryAbstractMessage msg) { + private void checkDiscoData(Map> discoData, TcpDiscoveryAbstractMessage msg) { if (discoData != null && discoData.size() > 1) { int cnt = 0; - for (NodeSpecificData data : discoData.values()) { - if (data.nodeSpecificData().containsKey(GridComponent.DiscoveryDataExchangeType.CACHE_PROC.ordinal())) + for (Map data : discoData.values()) { + if (data.containsKey(GridComponent.DiscoveryDataExchangeType.CACHE_PROC.ordinal())) cnt++; }