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 e0ffae8ae7a IGNITE-26673 Refactor UpdateErrors message (#12410)
e0ffae8ae7a is described below

commit e0ffae8ae7affe7b55e1a2dcceed6ff863afd379
Author: Ilya Shishkov <[email protected]>
AuthorDate: Mon Oct 13 17:13:11 2025 +0300

    IGNITE-26673 Refactor UpdateErrors message (#12410)
---
 .../communication/GridIoMessageFactory.java        |   3 +-
 .../dht/atomic/GridDhtAtomicUpdateResponse.java    |   7 +-
 .../atomic/GridNearAtomicAbstractUpdateFuture.java |   2 +-
 .../atomic/GridNearAtomicSingleUpdateFuture.java   |   4 +-
 .../dht/atomic/GridNearAtomicUpdateFuture.java     |   4 +-
 .../dht/atomic/GridNearAtomicUpdateResponse.java   |   7 +-
 .../cache/distributed/dht/atomic/UpdateErrors.java | 122 +++++----------------
 7 files changed, 45 insertions(+), 104 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 a410d8ebb58..98cd6a74605 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
@@ -97,6 +97,7 @@ import 
org.apache.ignite.internal.codegen.TransactionIsolationMessageSerializer;
 import org.apache.ignite.internal.codegen.TxLockSerializer;
 import org.apache.ignite.internal.codegen.TxLocksRequestSerializer;
 import org.apache.ignite.internal.codegen.TxLocksResponseSerializer;
+import org.apache.ignite.internal.codegen.UpdateErrorsSerializer;
 import 
org.apache.ignite.internal.codegen.UserAuthenticateRequestMessageSerializer;
 import 
org.apache.ignite.internal.codegen.UserAuthenticateResponseMessageSerializer;
 import 
org.apache.ignite.internal.codegen.UserManagementOperationFinishedMessageSerializer;
@@ -250,7 +251,7 @@ public class GridIoMessageFactory implements 
MessageFactoryProvider {
         factory.register((short)-53, SchemaOperationStatusMessage::new, new 
SchemaOperationStatusMessageSerializer());
         factory.register((short)-51, NearCacheUpdates::new, new 
NearCacheUpdatesSerializer());
         factory.register((short)-50, GridNearAtomicCheckUpdateRequest::new, 
new GridNearAtomicCheckUpdateRequestSerializer());
-        factory.register((short)-49, UpdateErrors::new);
+        factory.register((short)-49, UpdateErrors::new, new 
UpdateErrorsSerializer());
         factory.register((short)-48, GridDhtAtomicNearResponse::new, new 
GridDhtAtomicNearResponseSerializer());
         factory.register((short)-45, 
GridChangeGlobalStateMessageResponse::new);
         factory.register((short)-43, IgniteIoTestMessage::new);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
index eacb7872beb..daea4d72b0d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
@@ -23,6 +23,7 @@ import java.util.List;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.internal.GridDirectCollection;
+import org.apache.ignite.internal.managers.communication.ErrorMessage;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.GridCacheDeployable;
 import org.apache.ignite.internal.processors.cache.GridCacheIdMessage;
@@ -96,12 +97,12 @@ public class GridDhtAtomicUpdateResponse extends 
GridCacheIdMessage implements G
         if (errs == null)
             errs = new UpdateErrors();
 
-        errs.onError(err);
+        errs.errorMessage(new ErrorMessage(err));
     }
 
     /** {@inheritDoc} */
-    @Override public IgniteCheckedException error() {
-        return errs != null ? errs.error() : null;
+    @Override public Throwable error() {
+        return errs != null ? errs.errorMessage().toThrowable() : null;
     }
 
     /**
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
index 7c8fef96e66..838c7efecdb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
@@ -446,7 +446,7 @@ public abstract class GridNearAtomicAbstractUpdateFuture 
extends GridCacheFuture
                 " (the binary objects will be used instead).");
         }
 
-        IgniteCheckedException error = res.error();
+        Throwable error = res.error();
 
         if (suppressedErr != null)
             error.addSuppressed(suppressedErr);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
index 2322b9eeb4d..52535038cc7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
@@ -203,9 +203,9 @@ public class GridNearAtomicSingleUpdateFuture extends 
GridNearAtomicAbstractUpda
         UpdateErrors errors = res.errors();
 
         if (errors != null) {
-            assert errors.error() != null;
+            assert errors.errorMessage() != null;
 
-            completeFuture(null, errors.error(), res.futureId());
+            completeFuture(null, errors.errorMessage().toThrowable(), 
res.futureId());
 
             return;
         }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
index 426e64c1311..e2ac139b1e4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
@@ -330,9 +330,9 @@ public class GridNearAtomicUpdateFuture extends 
GridNearAtomicAbstractUpdateFutu
         UpdateErrors errors = res.errors();
 
         if (errors != null) {
-            assert errors.error() != null;
+            assert errors.errorMessage() != null;
 
-            completeFuture(null, errors.error(), res.futureId());
+            completeFuture(null, errors.errorMessage().toThrowable(), 
res.futureId());
 
             return;
         }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
index ff631a36d47..cd244735087 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
@@ -23,6 +23,7 @@ import java.util.UUID;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.managers.communication.ErrorMessage;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
@@ -187,12 +188,12 @@ public class GridNearAtomicUpdateResponse extends 
GridCacheIdMessage implements
         if (errs == null)
             errs = new UpdateErrors();
 
-        errs.onError(err);
+        errs.errorMessage(new ErrorMessage(err));
     }
 
     /** {@inheritDoc} */
-    @Override public IgniteCheckedException error() {
-        return errs != null ? errs.error() : null;
+    @Override public Throwable error() {
+        return errs != null ? errs.errorMessage().toThrowable() : null;
     }
 
     /**
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/UpdateErrors.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/UpdateErrors.java
index 204d7f89fec..10011585990 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/UpdateErrors.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/UpdateErrors.java
@@ -17,40 +17,32 @@
 
 package org.apache.ignite.internal.processors.cache.distributed.dht.atomic;
 
-import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.GridDirectTransient;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.managers.communication.ErrorMessage;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.GridCacheMessage;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 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.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;
 
 /**
  *
  */
+@SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
 public class UpdateErrors implements Message {
     /** Failed keys. */
     @GridToStringInclude
-    @GridDirectCollection(KeyCacheObject.class)
+    @Order(0)
     private List<KeyCacheObject> failedKeys;
 
-    /** Update error. */
-    @GridDirectTransient
-    @GridToStringInclude
-    private IgniteCheckedException err;
-
-    /** Serialized update error. */
-    private byte[] errBytes;
+    /** Error message. */
+    @Order(value = 1, method = "errorMessage")
+    private ErrorMessage errMsg;
 
     /**
      *
@@ -62,24 +54,24 @@ public class UpdateErrors implements Message {
     /**
      * @param err Error.
      */
-    public UpdateErrors(IgniteCheckedException err) {
+    public UpdateErrors(Throwable err) {
         assert err != null;
 
-        this.err = err;
+        errMsg = new ErrorMessage(err);
     }
 
     /**
-     * @param err Error.
+     * @param errMsg New error message.
      */
-    public void onError(IgniteCheckedException err) {
-        this.err = err;
+    public void errorMessage(ErrorMessage errMsg) {
+        this.errMsg = errMsg;
     }
 
     /**
-     * @return Error.
+     * @return Error message.
      */
-    public IgniteCheckedException error() {
-        return err;
+    public ErrorMessage errorMessage() {
+        return errMsg;
     }
 
     /**
@@ -89,6 +81,13 @@ public class UpdateErrors implements Message {
         return failedKeys;
     }
 
+    /**
+     * @param failedKeys New failed keys.
+     */
+    public void failedKeys(List<KeyCacheObject> failedKeys) {
+        this.failedKeys = failedKeys;
+    }
+
     /**
      * Adds key to collection of failed keys.
      *
@@ -101,10 +100,10 @@ public class UpdateErrors implements Message {
 
         failedKeys.add(key);
 
-        if (err == null)
-            err = new IgniteCheckedException("Failed to update keys.");
+        if (errMsg == null)
+            errMsg = new ErrorMessage(new IgniteCheckedException("Failed to 
update keys."));
 
-        err.addSuppressed(e);
+        errMsg.toThrowable().addSuppressed(e);
     }
 
     /**
@@ -117,81 +116,20 @@ public class UpdateErrors implements Message {
 
         failedKeys.addAll(keys);
 
-        if (err == null)
-            err = new IgniteCheckedException("Failed to update keys on primary 
node.");
+        if (errMsg == null)
+            errMsg = new ErrorMessage(new IgniteCheckedException("Failed to 
update keys on primary node."));
 
-        err.addSuppressed(e);
+        errMsg.toThrowable().addSuppressed(e);
     }
 
     /** */
-    void prepareMarshal(GridCacheMessage msg, GridCacheContext cctx) throws 
IgniteCheckedException {
+    void prepareMarshal(GridCacheMessage msg, GridCacheContext<?, ?> cctx) 
throws IgniteCheckedException {
         msg.prepareMarshalCacheObjects(failedKeys, cctx);
-
-        if (errBytes == null)
-            errBytes = U.marshal(cctx.marshaller(), err);
     }
 
     /** */
-    void finishUnmarshal(GridCacheMessage msg, GridCacheContext cctx, 
ClassLoader ldr) throws IgniteCheckedException {
+    void finishUnmarshal(GridCacheMessage msg, GridCacheContext<?, ?> cctx, 
ClassLoader ldr) throws IgniteCheckedException {
         msg.finishUnmarshalCacheObjects(failedKeys, cctx, ldr);
-
-        if (errBytes != null && err == null)
-            err = U.unmarshal(cctx.marshaller(), errBytes, 
U.resolveClassLoader(ldr, cctx.gridConfig()));
-    }
-
-    /** {@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.writeByteArray(errBytes))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeCollection(failedKeys, 
MessageCollectionItemType.KEY_CACHE_OBJECT))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                errBytes = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                failedKeys = 
reader.readCollection(MessageCollectionItemType.KEY_CACHE_OBJECT);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
     }
 
     /** {@inheritDoc} */

Reply via email to