This is an automated email from the ASF dual-hosted git repository.
shishkovilja pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 9680bd80505 IGNITE-27294 Use MessageSerializer for
TcpDiscoveryHandshakeRequest (#12568)
9680bd80505 is described below
commit 9680bd8050568cac93ca45988507c8c17856fd68
Author: Vladimir Steshin <[email protected]>
AuthorDate: Thu Dec 18 13:04:37 2025 +0300
IGNITE-27294 Use MessageSerializer for TcpDiscoveryHandshakeRequest (#12568)
---
.../discovery/DiscoveryMessageFactory.java | 3 ++
.../ignite/spi/discovery/tcp/ServerImpl.java | 8 ++--
.../tcp/messages/TcpDiscoveryHandshakeRequest.java | 45 ++++++++++++----------
.../tcp/TcpDiscoveryNetworkIssuesTest.java | 2 +-
4 files changed, 33 insertions(+), 25 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 7786560ad90..05160eec6bd 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
@@ -21,6 +21,7 @@ import
org.apache.ignite.internal.codegen.TcpDiscoveryCheckFailedMessageSerializ
import
org.apache.ignite.internal.codegen.TcpDiscoveryClientPingRequestSerializer;
import
org.apache.ignite.internal.codegen.TcpDiscoveryClientPingResponseSerializer;
import
org.apache.ignite.internal.codegen.TcpDiscoveryConnectionCheckMessageSerializer;
+import
org.apache.ignite.internal.codegen.TcpDiscoveryHandshakeRequestSerializer;
import
org.apache.ignite.internal.codegen.TcpDiscoveryLoopbackProblemMessageSerializer;
import org.apache.ignite.internal.codegen.TcpDiscoveryPingRequestSerializer;
import org.apache.ignite.internal.codegen.TcpDiscoveryPingResponseSerializer;
@@ -31,6 +32,7 @@ import
org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryCheckFailedMessa
import
org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryClientPingRequest;
import
org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryClientPingResponse;
import
org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryConnectionCheckMessage;
+import
org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryHandshakeRequest;
import
org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryLoopbackProblemMessage;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryPingRequest;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryPingResponse;
@@ -48,5 +50,6 @@ public class DiscoveryMessageFactory implements
MessageFactoryProvider {
factory.register((short)5, TcpDiscoveryLoopbackProblemMessage::new,
new TcpDiscoveryLoopbackProblemMessageSerializer());
factory.register((short)6, TcpDiscoveryConnectionCheckMessage::new,
new TcpDiscoveryConnectionCheckMessageSerializer());
factory.register((short)7, TcpDiscoveryRingLatencyCheckMessage::new,
new TcpDiscoveryRingLatencyCheckMessageSerializer());
+ factory.register((short)8, TcpDiscoveryHandshakeRequest::new, new
TcpDiscoveryHandshakeRequestSerializer());
}
}
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 470fafa4379..d1d15557df0 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
@@ -3546,7 +3546,7 @@ class ServerImpl extends TcpDiscoveryImpl {
boolean changeTop = sndState != null &&
!sndState.isStartingPoint();
if (changeTop)
-
hndMsg.changeTopology(ring.previousNodeOf(next).id());
+
hndMsg.previousNodeId(ring.previousNodeOf(next).id());
if (log.isDebugEnabled()) {
log.debug("Sending handshake [hndMsg=" +
hndMsg + ", sndState=" + sndState +
@@ -6879,7 +6879,7 @@ class ServerImpl extends TcpDiscoveryImpl {
}
}
}
- else if (req.changeTopology()) {
+ else if (req.previousNodeId() != null) {
// Node cannot connect to it's next (for local node
it's previous).
// Need to check connectivity to it.
long rcvdTime = lastRingMsgReceivedTime;
@@ -6904,7 +6904,7 @@ class ServerImpl extends TcpDiscoveryImpl {
InetSocketAddress liveAddr = null;
if (previous != null &&
!previous.id().equals(nodeId) &&
- (req.checkPreviousNodeId() == null ||
previous.id().equals(req.checkPreviousNodeId()))) {
+ (req.previousNodeId() == null ||
previous.id().equals(req.previousNodeId()))) {
// The connection recovery connection to one
node is connCheckTick.
// We need to suppose network delays. So we
use half of this time.
@@ -6927,7 +6927,7 @@ class ServerImpl extends TcpDiscoveryImpl {
if (log.isInfoEnabled()) {
log.info("Previous node alive status [alive=" + ok
+
- ", checkPreviousNodeId=" +
req.checkPreviousNodeId() +
+ ", checkPreviousNodeId=" +
req.previousNodeId() +
", actualPreviousNode=" + previous +
", lastMessageReceivedTime=" + rcvdTime + ",
now=" + now +
", connCheckInterval=" + connCheckInterval +
']');
diff --git
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryHandshakeRequest.java
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryHandshakeRequest.java
index 384caf1a46c..76c5d68a9f4 100644
---
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryHandshakeRequest.java
+++
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryHandshakeRequest.java
@@ -18,39 +18,41 @@
package org.apache.ignite.spi.discovery.tcp.messages;
import java.util.UUID;
+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;
/**
* Handshake request.
*/
-public class TcpDiscoveryHandshakeRequest extends TcpDiscoveryAbstractMessage {
+public class TcpDiscoveryHandshakeRequest extends TcpDiscoveryAbstractMessage
implements Message {
/** */
private static final long serialVersionUID = 0L;
/** */
- private UUID prevNodeId;
+ @Order(value = 5, method = "previousNodeId")
+ private @Nullable UUID prevNodeId;
/** */
- private String dcId;
+ @Order(6)
+ private @Nullable String dcId;
/**
- * Constructor.
- *
- * @param creatorNodeId Creator node ID.
+ * Default constructor for {@link DiscoveryMessageFactory}.
*/
- public TcpDiscoveryHandshakeRequest(UUID creatorNodeId) {
- super(creatorNodeId);
+ public TcpDiscoveryHandshakeRequest() {
+ // No-op.
}
/**
- * Gets topology change flag.<br>
- * {@code True} means node intent to fail nodes in a ring.
+ * Constructor.
*
- * @return Change topology flag.
+ * @param creatorNodeId Creator node ID.
*/
- public boolean changeTopology() {
- return getFlag(CHANGE_TOPOLOGY_FLAG_POS);
+ public TcpDiscoveryHandshakeRequest(UUID creatorNodeId) {
+ super(creatorNodeId);
}
/**
@@ -58,18 +60,16 @@ public class TcpDiscoveryHandshakeRequest extends
TcpDiscoveryAbstractMessage {
*
* @return Previous node ID to check.
*/
- public UUID checkPreviousNodeId() {
+ public @Nullable UUID previousNodeId() {
return prevNodeId;
}
/**
- * Sets topology change flag and previous node ID to check.<br>
+ * Sets topology change request and previous node ID to check.<br>
*
- * @param prevNodeId If not {@code null}, will set topology check flag and
set node ID to check.
+ * @param prevNodeId If not {@code null}, will set topology check request
and node ID to check.
*/
- public void changeTopology(UUID prevNodeId) {
- setFlag(CHANGE_TOPOLOGY_FLAG_POS, prevNodeId != null);
-
+ public void previousNodeId(@Nullable UUID prevNodeId) {
this.prevNodeId = prevNodeId;
}
@@ -83,9 +83,14 @@ public class TcpDiscoveryHandshakeRequest extends
TcpDiscoveryAbstractMessage {
this.dcId = dcId;
}
+ /** {@inheritDoc} */
+ @Override public short directType() {
+ return 8;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(TcpDiscoveryHandshakeRequest.class, this, "super",
super.toString(),
- "isChangeTopology", changeTopology());
+ "isChangeTopology", prevNodeId != null);
}
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNetworkIssuesTest.java
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNetworkIssuesTest.java
index 3b2c9258044..60db3be1436 100644
---
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNetworkIssuesTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNetworkIssuesTest.java
@@ -307,7 +307,7 @@ public class TcpDiscoveryNetworkIssuesTest extends
GridCommonAbstractTest {
// Request to establish new permanent cluster connection from doubting
node0 to node2.
testSpi(doubtNode0).hsRqLsnr.set((s, hsRq) -> {
- if (hsRq.changeTopology() &&
frozenNodeId.equals(hsRq.checkPreviousNodeId())) {
+ if (hsRq.previousNodeId() != null &&
frozenNodeId.equals(hsRq.previousNodeId())) {
// Continue simulation of node1 freeze at GC and processes no
discovery messages.
testSpi(frozenNode1).addrsToBlock = Collections.emptyList();
}