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 5f399ed0c46fd..978712ade92f4 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 @@ -17,6 +17,7 @@ package org.apache.ignite.internal.managers.discovery; +import org.apache.ignite.internal.codegen.ChangeGlobalStateFinishMessageSerializer; import org.apache.ignite.internal.codegen.InetAddressMessageSerializer; import org.apache.ignite.internal.codegen.InetSocketAddressMessageSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryAuthFailedMessageSerializer; @@ -34,6 +35,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.processors.cluster.ChangeGlobalStateFinishMessage; 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; @@ -76,5 +78,7 @@ public class DiscoveryMessageFactory implements MessageFactoryProvider { factory.register((short)11, TcpDiscoveryAuthFailedMessage::new, new TcpDiscoveryAuthFailedMessageSerializer()); factory.register((short)12, TcpDiscoveryDuplicateIdMessage::new, new TcpDiscoveryDuplicateIdMessageSerializer()); factory.register((short)13, TcpDiscoveryClientMetricsUpdateMessage::new, new TcpDiscoveryClientMetricsUpdateMessageSerializer()); + + factory.register((short)500, ChangeGlobalStateFinishMessage::new, new ChangeGlobalStateFinishMessageSerializer()); } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java index 9f73c154db657..712fe4eb75cc6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java @@ -19,45 +19,58 @@ import java.util.UUID; import org.apache.ignite.cluster.ClusterState; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.managers.discovery.DiscoCache; import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage; import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; /** * */ -public class ChangeGlobalStateFinishMessage implements DiscoveryCustomMessage { +public class ChangeGlobalStateFinishMessage implements DiscoveryCustomMessage, Message { /** */ private static final long serialVersionUID = 0L; /** Custom message ID. */ - private final IgniteUuid id = IgniteUuid.randomUuid(); + @Order(0) + private IgniteUuid id; /** State change request ID. */ - private final UUID reqId; + @Order(value = 1, method = "requestId") + private UUID reqId; /** New cluster state. */ - private final ClusterState state; + @Order(2) + private ClusterState state; /** State change error. */ - private Boolean transitionRes; + @Order(value = 3, method = "success") + private boolean transitionRes; + + /** Constructor. */ + public ChangeGlobalStateFinishMessage() { + // No-op. + } /** * @param reqId State change request ID. * @param state New cluster state. + * @param transitionRes State change error. */ public ChangeGlobalStateFinishMessage( UUID reqId, ClusterState state, - Boolean transitionRes + boolean transitionRes ) { assert reqId != null; assert state != null; + id = IgniteUuid.randomUuid(); this.reqId = reqId; this.state = state; this.transitionRes = transitionRes; @@ -70,6 +83,13 @@ public UUID requestId() { return reqId; } + /** + * @param reqId State change request ID. + */ + public void requestId(UUID reqId) { + this.reqId = reqId; + } + /** * @return New cluster state. * @deprecated Use {@link #state()} instead. @@ -83,7 +103,14 @@ public boolean clusterActive() { * @return Transition success status. */ public boolean success() { - return transitionRes == null ? state.active() : transitionRes; + return transitionRes; + } + + /** + * @param transitionRes State change error. + */ + public void success(boolean transitionRes) { + this.transitionRes = transitionRes; } /** @@ -93,11 +120,25 @@ public ClusterState state() { return state; } + /** + * @param state New cluster state. + */ + public void state(ClusterState state) { + this.state = state; + } + /** {@inheritDoc} */ @Override public IgniteUuid id() { return id; } + /** + * @param id Unique custom message ID. + */ + public void id(IgniteUuid id) { + this.id = id; + } + /** {@inheritDoc} */ @Nullable @Override public DiscoveryCustomMessage ackMessage() { return null; @@ -118,4 +159,9 @@ public ClusterState state() { @Override public String toString() { return S.toString(ChangeGlobalStateFinishMessage.class, this); } + + /** {@inheritDoc} */ + @Override public short directType() { + return 500; + } }