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

av 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 7bd89b0b7f4 IGNITE-27880 Use MessageSerializer for 
GridDeploymentRequest (#12750)
7bd89b0b7f4 is described below

commit 7bd89b0b7f4926774d5a2c8f53b54ca1a0f2e2dc
Author: Dmitry Werner <[email protected]>
AuthorDate: Thu Feb 19 22:00:49 2026 +0500

    IGNITE-27880 Use MessageSerializer for GridDeploymentRequest (#12750)
---
 .../communication/GridIoMessageFactory.java        |   3 +-
 .../deployment/GridDeploymentCommunication.java    |   8 +-
 .../managers/deployment/GridDeploymentRequest.java | 162 +++++++--------------
 ...loymentRequestOfUnknownClassProcessingTest.java |   3 +-
 4 files changed, 56 insertions(+), 120 deletions(-)

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 8108c88978e..07592169e9c 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
@@ -64,6 +64,7 @@ import 
org.apache.ignite.internal.codegen.GridCacheVersionExSerializer;
 import org.apache.ignite.internal.codegen.GridCacheVersionSerializer;
 import 
org.apache.ignite.internal.codegen.GridChangeGlobalStateMessageResponseSerializer;
 import org.apache.ignite.internal.codegen.GridCheckpointRequestSerializer;
+import org.apache.ignite.internal.codegen.GridDeploymentRequestSerializer;
 import org.apache.ignite.internal.codegen.GridDeploymentResponseSerializer;
 import 
org.apache.ignite.internal.codegen.GridDhtAffinityAssignmentRequestSerializer;
 import 
org.apache.ignite.internal.codegen.GridDhtAffinityAssignmentResponseSerializer;
@@ -371,7 +372,7 @@ public class GridIoMessageFactory implements 
MessageFactoryProvider {
         factory.register((short)8, GridIoMessage::new, new 
GridIoMessageSerializer());
         factory.register((short)9, GridIoUserMessage::new);
         factory.register((short)10, GridDeploymentInfoBean::new);
-        factory.register((short)11, GridDeploymentRequest::new);
+        factory.register((short)11, GridDeploymentRequest::new, new 
GridDeploymentRequestSerializer());
         factory.register((short)12, GridDeploymentResponse::new, new 
GridDeploymentResponseSerializer());
         factory.register((short)13, GridEventStorageMessage::new, new 
GridEventStorageMessageSerializer());
         factory.register((short)16, GridCacheTxRecoveryRequest::new, new 
GridCacheTxRecoveryRequestSerializer());
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentCommunication.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentCommunication.java
index 5134e353311..6de75ab2089 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentCommunication.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentCommunication.java
@@ -188,7 +188,7 @@ class GridDeploymentCommunication {
 
         if (req.responseTopic() == null) {
             try {
-                req.responseTopic(U.unmarshal(marsh, req.responseTopicBytes(), 
U.resolveClassLoader(ctx.config())));
+                req.finishUnmarshal(marsh, U.resolveClassLoader(ctx.config()));
             }
             catch (IgniteCheckedException e) {
                 U.error(log, "Failed to process deployment request (will 
ignore) [" +
@@ -357,13 +357,11 @@ class GridDeploymentCommunication {
     void sendUndeployRequest(String rsrcName, Collection<ClusterNode> 
rmtNodes) throws IgniteCheckedException {
         assert !rmtNodes.contains(ctx.discovery().localNode());
 
-        Message req = new GridDeploymentRequest(null, null, rsrcName, true);
-
         if (!rmtNodes.isEmpty()) {
             ctx.io().sendToGridTopic(
                 rmtNodes,
                 TOPIC_CLASSLOAD,
-                req,
+                new GridDeploymentRequest(null, null, rsrcName, true),
                 GridIoPolicy.P2P_POOL);
         }
     }
@@ -420,7 +418,7 @@ class GridDeploymentCommunication {
             long start = U.currentTimeMillis();
 
             if (req.responseTopic() != null && 
!ctx.localNodeId().equals(dstNode.id()))
-                req.responseTopicBytes(U.marshal(marsh, req.responseTopic()));
+                req.prepareMarshal(marsh);
 
             ctx.io().sendToGridTopic(dstNode, TOPIC_CLASSLOAD, req, 
GridIoPolicy.P2P_POOL);
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentRequest.java
index ab5ea22f41c..1014b8c990c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentRequest.java
@@ -17,42 +17,43 @@
 
 package org.apache.ignite.internal.managers.deployment;
 
-import java.nio.ByteBuffer;
 import java.util.Collection;
 import java.util.UUID;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.GridDirectTransient;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteUuid;
+import org.apache.ignite.marshaller.Marshaller;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Deployment request.
  */
 public class GridDeploymentRequest implements Message {
     /** Response topic. Response should be sent back to this topic. */
-    @GridDirectTransient
     private Object resTopic;
 
     /** Serialized topic. */
+    @Order(value = 0, method = "responseTopicBytes")
     private byte[] resTopicBytes;
 
     /** Requested class name. */
+    @Order(value = 1, method = "resourceName")
     private String rsrcName;
 
     /** Class loader ID. */
+    @Order(value = 2, method = "classLoaderId")
     private IgniteUuid ldrId;
 
     /** Undeploy flag. */
+    @Order(3)
     private boolean isUndeploy;
 
     /** Nodes participating in request (chain). */
+    @Order(4)
     @GridToStringInclude
-    @GridDirectCollection(UUID.class)
     private Collection<UUID> nodeIds;
 
     /**
@@ -90,24 +91,17 @@ public class GridDeploymentRequest implements Message {
         return resTopic;
     }
 
-    /**
-     * @param resTopic Response topic.
-     */
-    void responseTopic(Object resTopic) {
-        this.resTopic = resTopic;
-    }
-
     /**
      * @return Serialized topic.
      */
-    byte[] responseTopicBytes() {
+    public byte[] responseTopicBytes() {
         return resTopicBytes;
     }
 
     /**
      * @param resTopicBytes Serialized topic.
      */
-    void responseTopicBytes(byte[] resTopicBytes) {
+    public void responseTopicBytes(byte[] resTopicBytes) {
         this.resTopicBytes = resTopicBytes;
     }
 
@@ -116,28 +110,49 @@ public class GridDeploymentRequest implements Message {
      *
      * @return Resource or class name.
      */
-    String resourceName() {
+    public String resourceName() {
         return rsrcName;
     }
 
+    /**
+     * @param rsrcName Resource or class name.
+     */
+    public void resourceName(String rsrcName) {
+        this.rsrcName = rsrcName;
+    }
+
     /**
      * Gets property ldrId.
      *
-     * @return Property ldrId.
+     * @return Property class loader ID.
      */
-    IgniteUuid classLoaderId() {
+    public IgniteUuid classLoaderId() {
         return ldrId;
     }
 
+    /**
+     * @param ldrId Property class loader ID.
+     */
+    public void classLoaderId(IgniteUuid ldrId) {
+        this.ldrId = ldrId;
+    }
+
     /**
      * Gets property undeploy.
      *
      * @return Property undeploy.
      */
-    boolean isUndeploy() {
+    public boolean isUndeploy() {
         return isUndeploy;
     }
 
+    /**
+     * @param isUndeploy Property undeploy.
+     */
+    public void isUndeploy(boolean isUndeploy) {
+        this.isUndeploy = isUndeploy;
+    }
+
     /**
      * @return Node IDs chain which is updated as request jumps
      *      from node to node.
@@ -154,101 +169,24 @@ public class GridDeploymentRequest implements Message {
         this.nodeIds = nodeIds;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeBoolean(isUndeploy))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeIgniteUuid(ldrId))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeCollection(nodeIds, 
MessageCollectionItemType.UUID))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeByteArray(resTopicBytes))
-                    return false;
-
-                writer.incrementState();
-
-            case 4:
-                if (!writer.writeString(rsrcName))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
+    /**
+     * @param marsh Marshaller.
+     */
+    public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException 
{
+        if (resTopic != null && resTopicBytes == null)
+            resTopicBytes = U.marshal(marsh, resTopic);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                isUndeploy = reader.readBoolean();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                ldrId = reader.readIgniteUuid();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                nodeIds = 
reader.readCollection(MessageCollectionItemType.UUID);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                resTopicBytes = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 4:
-                rsrcName = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
+    /**
+     * @param marsh Marshaller.
+     * @param ldr Class loader.
+     */
+    public void finishUnmarshal(Marshaller marsh, ClassLoader ldr) throws 
IgniteCheckedException {
+        if (resTopicBytes != null && resTopic == null) {
+            resTopic = U.unmarshal(marsh, resTopicBytes, ldr);
 
+            resTopicBytes = null;
         }
-
-        return true;
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/managers/deployment/DeploymentRequestOfUnknownClassProcessingTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/deployment/DeploymentRequestOfUnknownClassProcessingTest.java
index 46387033328..356e81477b3 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/managers/deployment/DeploymentRequestOfUnknownClassProcessingTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/deployment/DeploymentRequestOfUnknownClassProcessingTest.java
@@ -25,7 +25,6 @@ import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.managers.communication.GridIoPolicy;
 import org.apache.ignite.internal.managers.communication.GridMessageListener;
 import org.apache.ignite.internal.util.future.GridFutureAdapter;
-import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.testframework.GridTestExternalClassLoader;
 import org.apache.ignite.testframework.ListeningTestLogger;
 import org.apache.ignite.testframework.LogListener;
@@ -128,7 +127,7 @@ public class DeploymentRequestOfUnknownClassProcessingTest 
extends GridCommonAbs
         GridDeploymentRequest req = new GridDeploymentRequest(TEST_TOPIC_NAME, 
locDep.classLoaderId(),
             UNKNOWN_CLASS_NAME, false);
 
-        req.responseTopicBytes(U.marshal(locNode.context(), 
req.responseTopic()));
+        req.prepareMarshal(locNode.context().marshaller());
 
         locNode.context().io().sendToGridTopic(remNode.localNode(), 
TOPIC_CLASSLOAD, req, GridIoPolicy.P2P_POOL);
 

Reply via email to