This is an automated email from the ASF dual-hosted git repository.

sergeychugunov 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 bddff632c52 IGNITE-27597 Use MessageSerializer for UserAcceptedMessage 
and UserProposedMessage (#12643)
bddff632c52 is described below

commit bddff632c52ae1dd612a45b5041aa00028c061aa
Author: Dmitry Werner <[email protected]>
AuthorDate: Thu Mar 5 14:34:06 2026 +0500

    IGNITE-27597 Use MessageSerializer for UserAcceptedMessage and 
UserProposedMessage (#12643)
---
 .../managers/communication/ErrorMessage.java       |  9 +++--
 .../communication/GridIoMessageFactory.java        |  2 +-
 .../discovery/DiscoveryMessageFactory.java         | 15 ++++++++
 .../internal/processors/authentication/User.java   | 28 +++++++--------
 .../authentication/UserAcceptedMessage.java        | 41 ++++++++++++++++------
 .../authentication/UserManagementOperation.java    | 21 ++++++++---
 .../authentication/UserProposedMessage.java        | 25 ++++++++++---
 7 files changed, 103 insertions(+), 38 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/ErrorMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/ErrorMessage.java
index 49889896252..34146c63d11 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/ErrorMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/ErrorMessage.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.managers.communication;
 
+import java.io.Serializable;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.internal.MessageProcessor;
@@ -40,7 +41,11 @@ import static org.apache.ignite.marshaller.Marshallers.jdk;
  * <p>If the message serialization fails, wraps this error with own one.
  */
 @SuppressWarnings({"NullableProblems", "unused"})
-public class ErrorMessage implements Message {
+// TODO Remove Serializable once 
https://issues.apache.org/jira/browse/IGNITE-27627 is completed.
+public class ErrorMessage implements Message, Serializable {
+    /** */
+    private static final long serialVersionUID = 0L;
+
     /** Serialization and deserealization call holder. */
     @Order(value = 0, method = "errorBytes")
     @GridToStringExclude
@@ -131,7 +136,7 @@ public class ErrorMessage implements Message {
 
     /** {@inheritDoc} */
     @Override public short directType() {
-        return -100;
+        return -66;
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index eb1a84d7223..6baea4e7684 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -355,7 +355,7 @@ public class GridIoMessageFactory implements 
MessageFactoryProvider {
         // -54 is reserved for SQL.
         // We don't use the code‑generated serializer for CompressedMessage - 
serialization is highly customized.
         factory.register(CompressedMessage.TYPE_CODE, CompressedMessage::new);
-        factory.register((short)-100, ErrorMessage::new, new 
ErrorMessageSerializer());
+        factory.register((short)-66, ErrorMessage::new, new 
ErrorMessageSerializer());
         factory.register((short)-65, TxInfo::new, new TxInfoSerializer());
         factory.register((short)-64, TxEntriesInfo::new, new 
TxEntriesInfoSerializer());
         factory.register((short)-63, ExchangeInfo::new, new 
ExchangeInfoSerializer());
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 009905b70d5..f15a181026a 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,16 @@
 
 package org.apache.ignite.internal.managers.discovery;
 
+import org.apache.ignite.internal.managers.communication.ErrorMessage;
+import 
org.apache.ignite.internal.managers.communication.ErrorMessageSerializer;
+import org.apache.ignite.internal.processors.authentication.User;
+import 
org.apache.ignite.internal.processors.authentication.UserAcceptedMessage;
+import 
org.apache.ignite.internal.processors.authentication.UserAcceptedMessageSerializer;
+import 
org.apache.ignite.internal.processors.authentication.UserManagementOperation;
+import 
org.apache.ignite.internal.processors.authentication.UserManagementOperationSerializer;
+import 
org.apache.ignite.internal.processors.authentication.UserProposedMessage;
+import 
org.apache.ignite.internal.processors.authentication.UserProposedMessageSerializer;
+import org.apache.ignite.internal.processors.authentication.UserSerializer;
 import 
org.apache.ignite.internal.processors.cache.CacheStatisticsModeChangeMessage;
 import 
org.apache.ignite.internal.processors.cache.CacheStatisticsModeChangeMessageSerializer;
 import 
org.apache.ignite.internal.processors.cache.TxTimeoutOnPartitionMapExchangeChangeMessage;
@@ -104,6 +114,8 @@ import 
org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryStatusCheckMessa
 public class DiscoveryMessageFactory implements MessageFactoryProvider {
     /** {@inheritDoc} */
     @Override public void registerAll(MessageFactory factory) {
+        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,
@@ -113,6 +125,7 @@ public class DiscoveryMessageFactory implements 
MessageFactoryProvider {
         factory.register((short)-102, TcpDiscoveryNodeMetricsMessage::new, new 
TcpDiscoveryNodeMetricsMessageSerializer());
         factory.register((short)-101, InetSocketAddressMessage::new, new 
InetSocketAddressMessageSerializer());
         factory.register((short)-100, InetAddressMessage::new, new 
InetAddressMessageSerializer());
+        factory.register((short)-66, ErrorMessage::new, new 
ErrorMessageSerializer());
 
         // TcpDiscoveryAbstractMessage
         factory.register((short)0, TcpDiscoveryCheckFailedMessage::new, new 
TcpDiscoveryCheckFailedMessageSerializer());
@@ -153,5 +166,7 @@ public class DiscoveryMessageFactory implements 
MessageFactoryProvider {
             new MetadataUpdateAcceptedMessageSerializer());
         factory.register((short)509, 
TxTimeoutOnPartitionMapExchangeChangeMessage::new,
             new TxTimeoutOnPartitionMapExchangeChangeMessageSerializer());
+        factory.register((short)510, UserAcceptedMessage::new, new 
UserAcceptedMessageSerializer());
+        factory.register((short)511, UserProposedMessage::new, new 
UserProposedMessageSerializer());
     }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/User.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/User.java
index 1441bd96521..877101693d4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/User.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/User.java
@@ -19,15 +19,17 @@ package 
org.apache.ignite.internal.processors.authentication;
 
 import java.io.Serializable;
 import java.util.Objects;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.plugin.extensions.communication.Message;
 import org.jetbrains.annotations.Nullable;
 import org.mindrot.BCrypt;
 
 /**
  */
-public class User implements Serializable {
+public class User implements Serializable, Message {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -43,11 +45,13 @@ public class User implements Serializable {
     private static int bCryptGensaltLog2Rounds = 10;
 
     /** User name. */
-    private String name;
+    @Order(0)
+    String name;
 
     /** Hashed password. */
+    @Order(1)
     @GridToStringExclude
-    private String hashedPasswd;
+    String hashedPasswd;
 
     /**
      * Constructor.
@@ -103,15 +107,7 @@ public class User implements Serializable {
      * @param passwd Plain text password.
      * @return Hashed password.
      */
-    @Nullable public static String password(String passwd) {
-        return password_bcrypt(passwd);
-    }
-
-    /**
-     * @param passwd Plain text password.
-     * @return Hashed password.
-     */
-    @Nullable private static String password_bcrypt(String passwd) {
+    @Nullable private static String password(String passwd) {
         return BCrypt.hashpw(passwd, BCrypt.gensalt(bCryptGensaltLog2Rounds));
     }
 
@@ -141,12 +137,16 @@ public class User implements Serializable {
 
     /** {@inheritDoc} */
     @Override public int hashCode() {
-        int result = Objects.hash(name, hashedPasswd);
-        return result;
+        return Objects.hash(name, hashedPasswd);
     }
 
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(User.class, this);
     }
+
+    /** {@inheritDoc} */
+    @Override public short directType() {
+        return -109;
+    }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserAcceptedMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserAcceptedMessage.java
index ef87a444cb3..c0b49fefb2f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserAcceptedMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserAcceptedMessage.java
@@ -17,7 +17,8 @@
 
 package org.apache.ignite.internal.processors.authentication;
 
-import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.managers.communication.ErrorMessage;
 import org.apache.ignite.internal.managers.discovery.DiscoCache;
 import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
 import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
@@ -25,35 +26,48 @@ import 
org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 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;
 
 /**
  * Is sent as an acknowledgement for end (with success or error) of user 
management operation on the cluster
  * (see {@link UserProposedMessage} and {@link UserManagementOperation}).
  */
-public class UserAcceptedMessage implements DiscoveryCustomMessage {
+public class UserAcceptedMessage implements DiscoveryCustomMessage, Message {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** */
-    private final IgniteUuid id = IgniteUuid.randomUuid();
+    @Order(0)
+    IgniteUuid id;
 
     /** Operation ID. */
+    @Order(1)
     @GridToStringInclude
-    private final IgniteUuid opId;
+    IgniteUuid opId;
 
-    /** Error. */
-    private final IgniteCheckedException error;
+    /** Error message. */
+    @Order(2)
+    ErrorMessage errMsg;
+
+    /** Constructor. */
+    public UserAcceptedMessage() {
+        // No-op.
+    }
 
     /**
-     * @param opId THe ID of operation.
+     * @param opId The ID of operation.
      * @param error Error.
      */
-    UserAcceptedMessage(IgniteUuid opId, IgniteCheckedException error) {
+    UserAcceptedMessage(IgniteUuid opId, Throwable error) {
         assert opId != null || error != null;
 
+        id = IgniteUuid.randomUuid();
+
         this.opId = opId;
-        this.error = error;
+
+        if (error != null)
+            errMsg = new ErrorMessage(error);
     }
 
     /** {@inheritDoc} */
@@ -87,12 +101,17 @@ public class UserAcceptedMessage implements 
DiscoveryCustomMessage {
     /**
      * @return Error.
      */
-    IgniteCheckedException error() {
-        return error;
+    Throwable error() {
+        return ErrorMessage.error(errMsg);
     }
 
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(UserAcceptedMessage.class, this);
     }
+
+    /** {@inheritDoc} */
+    @Override public short directType() {
+        return 510;
+    }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserManagementOperation.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserManagementOperation.java
index 150a866cd8c..7d7be64e6f4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserManagementOperation.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserManagementOperation.java
@@ -19,24 +19,29 @@ package 
org.apache.ignite.internal.processors.authentication;
 
 import java.io.Serializable;
 import java.util.Objects;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.lang.IgniteUuid;
+import org.apache.ignite.plugin.extensions.communication.Message;
 
 /**
  * The operation with users. Used to deliver the information about requested 
operation to all server nodes.
  */
-public class UserManagementOperation implements Serializable {
+public class UserManagementOperation implements Serializable, Message {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** User. */
-    private User usr;
+    @Order(0)
+    User usr;
 
     /** Operation type. */
-    private OperationType type;
+    @Order(1)
+    OperationType type;
 
-    /** Operation Id. */
-    private final IgniteUuid id = IgniteUuid.randomUuid();
+    /** Operation ID. */
+    @Order(2)
+    IgniteUuid id;
 
     /**
      * Constructor.
@@ -52,6 +57,7 @@ public class UserManagementOperation implements Serializable {
     public UserManagementOperation(User usr, OperationType type) {
         this.usr = usr;
         this.type = type;
+        id = IgniteUuid.randomUuid();
     }
 
     /**
@@ -98,6 +104,11 @@ public class UserManagementOperation implements 
Serializable {
         return id.hashCode();
     }
 
+    /** {@inheritDoc} */
+    @Override public short directType() {
+        return -108;
+    }
+
     /**
      * User action type.
      */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserProposedMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserProposedMessage.java
index 1a0be8ecaa2..1c8e44299e8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserProposedMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserProposedMessage.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.processors.authentication;
 
+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.DiscoveryServerOnlyCustomMessage;
@@ -25,25 +26,33 @@ import 
org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 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;
 
 /**
  * A node sends this message when it wants to propose user operation (add / 
update / remove).
- *
+ * <p>
  * After sending this message to the cluster sending node gets blocked until 
operation acknowledgement is received.
- *
+ * <p>
  * {@link UserAcceptedMessage} is sent as an acknowledgement that operation is 
finished on the all nodes of the cluster.
  */
-public class UserProposedMessage implements DiscoveryServerOnlyCustomMessage {
+public class UserProposedMessage implements DiscoveryServerOnlyCustomMessage, 
Message {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** */
-    private final IgniteUuid id = IgniteUuid.randomUuid();
+    @Order(0)
+    IgniteUuid id;
 
     /** */
+    @Order(1)
     @GridToStringInclude
-    private final UserManagementOperation op;
+    UserManagementOperation op;
+
+    /** Constructor. */
+    public UserProposedMessage() {
+        // No-op.
+    }
 
     /**
      * @param op User action.
@@ -52,6 +61,7 @@ public class UserProposedMessage implements 
DiscoveryServerOnlyCustomMessage {
         assert op != null;
 
         this.op = op;
+        id = IgniteUuid.randomUuid();
     }
 
     /** {@inheritDoc} */
@@ -88,4 +98,9 @@ public class UserProposedMessage implements 
DiscoveryServerOnlyCustomMessage {
     @Override public String toString() {
         return S.toString(UserProposedMessage.class, this);
     }
+
+    /** {@inheritDoc} */
+    @Override public short directType() {
+        return 511;
+    }
 }

Reply via email to