From 8834530b78b8e14dc1917f9882d47d97dd7543ae Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Sun, 25 Jan 2026 19:53:39 +0300 Subject: [PATCH 1/3] raw --- .../ignite/spi/discovery/tcp/ServerImpl.java | 2 +- .../TcpDiscoveryStatusCheckMessage.java | 28 ++++++------------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java index ea8dd5f5c2db4..8bdb162b9be50 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java @@ -5898,7 +5898,7 @@ private void processStatusCheckMessage(final TcpDiscoveryStatusCheckMessage msg) if (F.contains(msg.failedNodes(), msg.creatorNodeId())) { msg0 = createTcpDiscoveryStatusCheckMessage( - msg.creatorNode(), + null, msg.creatorNodeId(), msg.failedNodeId()); diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java index 35b854e3c787b..1e53ca679fb72 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java @@ -22,7 +22,6 @@ import java.util.Objects; import java.util.UUID; import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode; import org.jetbrains.annotations.Nullable; /** @@ -43,14 +42,11 @@ public class TcpDiscoveryStatusCheckMessage extends TcpDiscoveryAbstractMessage /** Status RECONNECT. */ public static final int STATUS_RECON = 2; - /** Creator node. */ - private final TcpDiscoveryNode creatorNode; - /** Creator node addresses. */ - private final Collection creatorNodeAddrs; + @Nullable private final Collection creatorNodeAddrs; /** Failed node id. */ - private final UUID failedNodeId; + @Nullable private final UUID failedNodeId; /** Creator node status (initialized by coordinator). */ private int status; @@ -62,29 +58,23 @@ public class TcpDiscoveryStatusCheckMessage extends TcpDiscoveryAbstractMessage * @param creatorNodeId Creator node ID. * @param failedNodeId Failed node id. */ - public TcpDiscoveryStatusCheckMessage(UUID creatorNodeId, Collection creatorNodeAddrs, UUID failedNodeId) { + public TcpDiscoveryStatusCheckMessage( + UUID creatorNodeId, + @Nullable Collection creatorNodeAddrs, + @Nullable UUID failedNodeId + ) { super(creatorNodeId); this.creatorNodeAddrs = creatorNodeAddrs; - this.creatorNode = null; this.failedNodeId = failedNodeId; } - /** - * Gets creator node. - * - * @return Creator node. - */ - public @Nullable TcpDiscoveryNode creatorNode() { - return creatorNode; - } - /** * Gets creator node addresses. * * @return Creator node addresses. */ - public Collection creatorNodeAddrs() { + public @Nullable Collection creatorNodeAddrs() { return creatorNodeAddrs; } @@ -93,7 +83,7 @@ public Collection creatorNodeAddrs() { * * @return Failed node id. */ - public UUID failedNodeId() { + public @Nullable UUID failedNodeId() { return failedNodeId; } From 26ea9a50432e5c18744a5b80b70526439723eb57 Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Mon, 26 Jan 2026 15:23:02 +0300 Subject: [PATCH 2/3] impl --- .../discovery/DiscoveryMessageFactory.java | 3 + .../ignite/spi/discovery/tcp/ServerImpl.java | 2 +- .../TcpDiscoveryStatusCheckMessage.java | 64 +++++++++++++++++-- 3 files changed, 62 insertions(+), 7 deletions(-) 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 a31dbf77d135e..76e327d861534 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 @@ -39,6 +39,7 @@ import org.apache.ignite.internal.codegen.TcpDiscoveryPingRequestSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryPingResponseSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryRingLatencyCheckMessageSerializer; +import org.apache.ignite.internal.codegen.TcpDiscoveryStatusCheckMessageSerializer; import org.apache.ignite.plugin.extensions.communication.MessageFactory; import org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider; import org.apache.ignite.spi.discovery.tcp.messages.InetAddressMessage; @@ -63,6 +64,7 @@ import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryPingRequest; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryPingResponse; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryRingLatencyCheckMessage; +import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryStatusCheckMessage; /** Message factory for discovery messages. */ public class DiscoveryMessageFactory implements MessageFactoryProvider { @@ -92,5 +94,6 @@ public class DiscoveryMessageFactory implements MessageFactoryProvider { factory.register((short)13, TcpDiscoveryClientMetricsUpdateMessage::new, new TcpDiscoveryClientMetricsUpdateMessageSerializer()); factory.register((short)14, TcpDiscoveryMetricsUpdateMessage::new, new TcpDiscoveryMetricsUpdateMessageSerializer()); factory.register((short)15, TcpDiscoveryClientAckResponse::new, new TcpDiscoveryClientAckResponseSerializer()); + factory.register((short)16, TcpDiscoveryStatusCheckMessage::new, new TcpDiscoveryStatusCheckMessageSerializer()); } } diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java index 8bdb162b9be50..9f19322b8db32 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java @@ -5917,7 +5917,7 @@ private void processStatusCheckMessage(final TcpDiscoveryStatusCheckMessage msg) } try { - trySendMessageDirectly(msg0.creatorNodeAddrs(), msg0.creatorNodeId(), msg0); + trySendMessageDirectly(msg0.creatorNodeAddresses(), msg0.creatorNodeId(), msg0); if (log.isDebugEnabled()) log.debug("Responded to status check message " + diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java index 1e53ca679fb72..aff8f83991d4c 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java @@ -21,7 +21,11 @@ import java.util.Collection; import java.util.Objects; import java.util.UUID; +import java.util.stream.Collectors; +import org.apache.ignite.internal.Order; +import org.apache.ignite.internal.managers.discovery.DiscoveryMessageFactory; import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; /** @@ -32,7 +36,7 @@ * If a failed node id is specified then the message is sent across the ring up to the sender node * to ensure that the failed node is actually failed. */ -public class TcpDiscoveryStatusCheckMessage extends TcpDiscoveryAbstractMessage { +public class TcpDiscoveryStatusCheckMessage extends TcpDiscoveryAbstractMessage implements Message { /** */ private static final long serialVersionUID = 0L; @@ -43,14 +47,22 @@ public class TcpDiscoveryStatusCheckMessage extends TcpDiscoveryAbstractMessage public static final int STATUS_RECON = 2; /** Creator node addresses. */ - @Nullable private final Collection creatorNodeAddrs; + @Order(value = 5, method = "creatorNodeAddressesMessages") + @Nullable private Collection creatorNodeAddrsMsgs; /** Failed node id. */ - @Nullable private final UUID failedNodeId; + @Order(6) + @Nullable private UUID failedNodeId; /** Creator node status (initialized by coordinator). */ + @Order(7) private int status; + /** Empty constructor for {@link DiscoveryMessageFactory}. */ + public TcpDiscoveryStatusCheckMessage() { + // No-op. + } + /** * Constructor. * @@ -65,7 +77,11 @@ public TcpDiscoveryStatusCheckMessage( ) { super(creatorNodeId); - this.creatorNodeAddrs = creatorNodeAddrs; + if (creatorNodeAddrs != null) { + creatorNodeAddrsMsgs = creatorNodeAddrs.stream().map(a -> new InetSocketAddressMessage(a.getAddress(), a.getPort())) + .collect(Collectors.toList()); + } + this.failedNodeId = failedNodeId; } @@ -74,8 +90,30 @@ public TcpDiscoveryStatusCheckMessage( * * @return Creator node addresses. */ - public @Nullable Collection creatorNodeAddrs() { - return creatorNodeAddrs; + public @Nullable Collection creatorNodeAddresses() { + if (creatorNodeAddrsMsgs == null) + return null; + + return creatorNodeAddrsMsgs.stream().map(m -> new InetSocketAddress(m.address(), m.port())) + .collect(Collectors.toList()); + } + + /** + * Gets creator node addresses. + * + * @return Creator node addresses. + */ + public @Nullable Collection creatorNodeAddressesMessages() { + return creatorNodeAddrsMsgs; + } + + /** + * Sets creator node addresses. + * + * @param creatorNodeAddrsMsgs Creator node addresses. + */ + public void creatorNodeAddressesMessages(@Nullable Collection creatorNodeAddrsMsgs) { + this.creatorNodeAddrsMsgs = creatorNodeAddrsMsgs; } /** @@ -87,6 +125,15 @@ public TcpDiscoveryStatusCheckMessage( return failedNodeId; } + /** + * Sets failed node id. + * + * @param failedNodeId Failed node id. + */ + public void failedNodeId(@Nullable UUID failedNodeId) { + this.failedNodeId = failedNodeId; + } + /** * Gets creator status. * @@ -105,6 +152,11 @@ public void status(int status) { this.status = status; } + /** {@inheritDoc} */ + @Override public short directType() { + return 16; + } + /** {@inheritDoc} */ @Override public boolean equals(Object obj) { // NOTE! From e72ff381a6c8f5e85760c7fb1c86784fea1729c0 Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Tue, 3 Feb 2026 13:42:03 +0300 Subject: [PATCH 3/3] fix --- .../discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java index aff8f83991d4c..8d04b4f6d90d1 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryStatusCheckMessage.java @@ -154,7 +154,7 @@ public void status(int status) { /** {@inheritDoc} */ @Override public short directType() { - return 16; + return 18; } /** {@inheritDoc} */