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} */