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);