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 562932c59ec IGNITE-26829 Use MessageSerializer for
GridTaskResultResponse (#12466)
562932c59ec is described below
commit 562932c59ec98376ec64b926331ffad164af9e92
Author: Dmitry Werner <[email protected]>
AuthorDate: Sat Nov 1 14:19:09 2025 +0500
IGNITE-26829 Use MessageSerializer for GridTaskResultResponse (#12466)
---
.../communication/GridIoMessageFactory.java | 3 +-
.../rest/handlers/task/GridTaskCommandHandler.java | 8 +-
.../rest/handlers/task/GridTaskResultResponse.java | 123 +++++----------------
3 files changed, 35 insertions(+), 99 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 c36ad13741d..2ff350e8c72 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
@@ -99,6 +99,7 @@ import
org.apache.ignite.internal.codegen.GridQueryNextPageRequestSerializer;
import org.apache.ignite.internal.codegen.GridQueryNextPageResponseSerializer;
import org.apache.ignite.internal.codegen.GridTaskCancelRequestSerializer;
import org.apache.ignite.internal.codegen.GridTaskResultRequestSerializer;
+import org.apache.ignite.internal.codegen.GridTaskResultResponseSerializer;
import org.apache.ignite.internal.codegen.HandshakeMessageSerializer;
import org.apache.ignite.internal.codegen.HandshakeWaitMessageSerializer;
import
org.apache.ignite.internal.codegen.IgniteDhtDemandedPartitionsMapSerializer;
@@ -355,7 +356,7 @@ public class GridIoMessageFactory implements
MessageFactoryProvider {
factory.register((short)62, DataStreamerRequest::new);
factory.register((short)63, DataStreamerResponse::new);
factory.register((short)76, GridTaskResultRequest::new, new
GridTaskResultRequestSerializer());
- factory.register((short)77, GridTaskResultResponse::new);
+ factory.register((short)77, GridTaskResultResponse::new, new
GridTaskResultResponseSerializer());
factory.register((short)78, MissingMappingRequestMessage::new, new
MissingMappingRequestMessageSerializer());
factory.register((short)79, MissingMappingResponseMessage::new, new
MissingMappingResponseMessageSerializer());
factory.register((short)80, MetadataRequestMessage::new, new
MetadataRequestMessageSerializer());
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
index 484e2e332e4..31772b180dd 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
@@ -132,10 +132,8 @@ public class GridTaskCommandHandler extends
GridRestCommandHandlerAdapter {
if (err != null)
res.error(err.getMessage());
- else {
- res.result(desc.result());
- res.resultBytes(U.marshal(ctx, desc.result()));
- }
+ else
+ res.marshalResult(ctx, desc.result());
}
else
res.found(false);
@@ -433,7 +431,7 @@ public class GridTaskCommandHandler extends
GridRestCommandHandlerAdapter {
res = (GridTaskResultResponse)msg;
try {
- res.result(U.unmarshal(ctx, res.resultBytes(),
U.resolveClassLoader(ctx.config())));
+ res.unmarshalResult(ctx);
}
catch (IgniteCheckedException e) {
U.error(log, "Failed to unmarshal task result: " + res, e);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskResultResponse.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskResultResponse.java
index ac8d83f9b86..afd97872069 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskResultResponse.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskResultResponse.java
@@ -17,11 +17,11 @@
package org.apache.ignite.internal.processors.rest.handlers.task;
-import java.nio.ByteBuffer;
-import org.apache.ignite.internal.GridDirectTransient;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
import org.jetbrains.annotations.Nullable;
/**
@@ -29,19 +29,22 @@ import org.jetbrains.annotations.Nullable;
*/
public class GridTaskResultResponse implements Message {
/** Result. */
- @GridDirectTransient
- private Object res;
+ private @Nullable Object res;
/** Serialized result. */
+ @Order(value = 0, method = "resultBytes")
private byte[] resBytes;
/** Finished flag. */
+ @Order(1)
private boolean finished;
/** Flag indicating that task has ever been launched on node. */
+ @Order(2)
private boolean found;
/** Error. */
+ @Order(value = 3, method = "error")
private String err;
/**
@@ -51,13 +54,6 @@ public class GridTaskResultResponse implements Message {
return res;
}
- /**
- * @param res Task result.
- */
- public void result(@Nullable Object res) {
- this.res = res;
- }
-
/**
* @param resBytes Serialized result.
*/
@@ -115,90 +111,31 @@ public class GridTaskResultResponse implements Message {
}
/** {@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.writeString(err))
- return false;
-
- writer.incrementState();
-
- case 1:
- if (!writer.writeBoolean(finished))
- return false;
-
- writer.incrementState();
-
- case 2:
- if (!writer.writeBoolean(found))
- return false;
-
- writer.incrementState();
-
- case 3:
- if (!writer.writeByteArray(resBytes))
- return false;
-
- writer.incrementState();
-
- }
-
- return true;
+ @Override public short directType() {
+ return 77;
}
- /** {@inheritDoc} */
- @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
- reader.setBuffer(buf);
-
- switch (reader.state()) {
- case 0:
- err = reader.readString();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 1:
- finished = reader.readBoolean();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 2:
- found = reader.readBoolean();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 3:
- resBytes = reader.readByteArray();
-
- if (!reader.isLastRead())
- return false;
+ /**
+ * Marshals task result to byte array.
+ *
+ * @param ctx Context.
+ * @param res Task result.
+ */
+ public void marshalResult(GridKernalContext ctx, @Nullable Object res)
throws IgniteCheckedException {
+ resBytes = U.marshal(ctx, res);
+ }
- reader.incrementState();
+ /**
+ * Unmarshals task result from byte array.
+ *
+ * @param ctx Context.
+ */
+ public void unmarshalResult(GridKernalContext ctx) throws
IgniteCheckedException {
+ if (resBytes != null) {
+ res = U.unmarshal(ctx, resBytes,
U.resolveClassLoader(ctx.config()));
+ // It is not required anymore.
+ resBytes = null;
}
-
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public short directType() {
- return 77;
}
}