This is an automated email from the ASF dual-hosted git repository.
sergeychugunov 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 155f97c575c IGNITE-27989 Use MessageSerializer for
MetadataRemoveAcceptedMessage and MetadataRemoveProposedMessage (#12823)
155f97c575c is described below
commit 155f97c575cc77909e26da4a168b57dcd2642a55
Author: Dmitry Werner <[email protected]>
AuthorDate: Mon Mar 2 16:50:18 2026 +0500
IGNITE-27989 Use MessageSerializer for MetadataRemoveAcceptedMessage and
MetadataRemoveProposedMessage (#12823)
---
.../discovery/DiscoveryMessageFactory.java | 6 +++
.../cache/binary/BinaryMetadataTransport.java | 21 +++-----
.../binary/MetadataRemoveAcceptedMessage.java | 26 ++++++++--
.../binary/MetadataRemoveProposedMessage.java | 57 +++++++++++++---------
.../main/resources/META-INF/classnames.properties | 1 -
5 files changed, 68 insertions(+), 43 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java
index 20edf130db4..221e7708ae0 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java
@@ -19,6 +19,10 @@ package org.apache.ignite.internal.managers.discovery;
import
org.apache.ignite.internal.processors.cache.CacheStatisticsModeChangeMessage;
import
org.apache.ignite.internal.processors.cache.CacheStatisticsModeChangeMessageSerializer;
+import
org.apache.ignite.internal.processors.cache.binary.MetadataRemoveAcceptedMessage;
+import
org.apache.ignite.internal.processors.cache.binary.MetadataRemoveAcceptedMessageSerializer;
+import
org.apache.ignite.internal.processors.cache.binary.MetadataRemoveProposedMessage;
+import
org.apache.ignite.internal.processors.cache.binary.MetadataRemoveProposedMessageSerializer;
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
import
org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider;
import org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacket;
@@ -127,5 +131,7 @@ public class DiscoveryMessageFactory implements
MessageFactoryProvider {
// DiscoveryCustomMessage
factory.register((short)500, CacheStatisticsModeChangeMessage::new,
new CacheStatisticsModeChangeMessageSerializer());
factory.register((short)501, SecurityAwareCustomMessageWrapper::new,
new SecurityAwareCustomMessageWrapperSerializer());
+ factory.register((short)502, MetadataRemoveAcceptedMessage::new, new
MetadataRemoveAcceptedMessageSerializer());
+ factory.register((short)503, MetadataRemoveProposedMessage::new, new
MetadataRemoveProposedMessageSerializer());
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
index 908fdc41f2b..efa12ad9c11 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
@@ -922,23 +922,18 @@ final class BinaryMetadataTransport {
if (msg.isOnCoordinator()) {
if (metaVerInfo == null)
- msg.markRejected(new BinaryObjectException("Type not found
[typeId=" + typeId + ']'));
+ msg.markRejected("Type not found [typeId=" + typeId + ']');
if (metaVerInfo.pendingVersion() !=
metaVerInfo.acceptedVersion()) {
- msg.markRejected(new BinaryObjectException(
- "Remove type failed. " +
- "Type is being updated now [typeId=" + typeId
- + ", pendingVersion=" +
metaVerInfo.pendingVersion()
- + ", acceptedVersion=" +
metaVerInfo.acceptedVersion()
- + ']'));
+ msg.markRejected("Remove type failed. " +
+ "Type is being updated now [typeId=" + typeId
+ + ", pendingVersion=" + metaVerInfo.pendingVersion()
+ + ", acceptedVersion=" + metaVerInfo.acceptedVersion()
+ + ']');
}
- if (metaVerInfo.removing()) {
- msg.markRejected(new BinaryObjectException(
- "Remove type failed. " +
- "Type is being removed now [typeId=" + typeId
- + ']'));
- }
+ if (metaVerInfo.removing())
+ msg.markRejected("Remove type failed. Type is being
removed now [typeId=" + typeId + ']');
msg.setOnCoordinator(false);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataRemoveAcceptedMessage.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataRemoveAcceptedMessage.java
index 190e1c380ea..52392fdfd7e 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataRemoveAcceptedMessage.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataRemoveAcceptedMessage.java
@@ -17,37 +17,48 @@
package org.apache.ignite.internal.processors.cache.binary;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
+import org.apache.ignite.plugin.extensions.communication.Message;
import org.jetbrains.annotations.Nullable;
/**
* Acknowledge message for {@link MetadataRemoveProposedMessage}: see its
javadoc for detailed description of protocol.
- *
+ * <p>
* As discovery messaging doesn't guarantee that message makes only one pass
across the cluster
* <b>MetadataRemoveAcceptedMessage</b> enables to mark it as duplicated so
other nodes won't process it but skip.
*/
-public class MetadataRemoveAcceptedMessage implements DiscoveryCustomMessage {
+public class MetadataRemoveAcceptedMessage implements DiscoveryCustomMessage,
Message {
/** */
private static final long serialVersionUID = 0L;
/** */
- private final IgniteUuid id = IgniteUuid.randomUuid();
+ @Order(0)
+ IgniteUuid id;
/** */
- private final int typeId;
+ @Order(1)
+ int typeId;
/** */
- private boolean duplicated;
+ @Order(2)
+ boolean duplicated;
+
+ /** Constructor. */
+ public MetadataRemoveAcceptedMessage() {
+ // No-op.
+ }
/**
* @param typeId Type id.
*/
MetadataRemoveAcceptedMessage(int typeId) {
+ id = IgniteUuid.randomUuid();
this.typeId = typeId;
}
@@ -93,4 +104,9 @@ public class MetadataRemoveAcceptedMessage implements
DiscoveryCustomMessage {
@Override public String toString() {
return S.toString(MetadataRemoveAcceptedMessage.class, this);
}
+
+ /** {@inheritDoc} */
+ @Override public short directType() {
+ return 502;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataRemoveProposedMessage.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataRemoveProposedMessage.java
index eded65ca633..d9da720d70e 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataRemoveProposedMessage.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataRemoveProposedMessage.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.cache.binary;
import java.util.UUID;
import org.apache.ignite.binary.BinaryObjectException;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.binary.BinaryMetadata;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
@@ -26,6 +27,7 @@ import
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
+import org.apache.ignite.plugin.extensions.communication.Message;
import org.jetbrains.annotations.Nullable;
/**
@@ -33,27 +35,38 @@ import org.jetbrains.annotations.Nullable;
* discovery-based protocol for manage {@link BinaryMetadata metadata}
describing objects in binary format
* stored in Ignite caches.
*/
-public final class MetadataRemoveProposedMessage implements
DiscoveryCustomMessage {
+public final class MetadataRemoveProposedMessage implements
DiscoveryCustomMessage, Message {
/** */
private static final long serialVersionUID = 0L;
/** */
- private final IgniteUuid id = IgniteUuid.randomUuid();
+ @Order(0)
+ IgniteUuid id;
/** Node UUID which initiated metadata update. */
- private final UUID origNodeId;
+ @Order(1)
+ UUID origNodeId;
/** Metadata type id. */
- private final int typeId;
+ @Order(2)
+ int typeId;
/** Message acceptance status. */
- private ProposalStatus status = ProposalStatus.SUCCESSFUL;
+ @Order(3)
+ boolean rejected;
/** Message received on coordinator. */
- private boolean onCoordinator = true;
+ @Order(4)
+ boolean onCoordinator = true;
/** */
- private BinaryObjectException err;
+ @Order(5)
+ String errMsg;
+
+ /** Constructor. */
+ public MetadataRemoveProposedMessage() {
+ // No-op.
+ }
/**
* @param typeId Binary type ID.
@@ -62,8 +75,8 @@ public final class MetadataRemoveProposedMessage implements
DiscoveryCustomMessa
public MetadataRemoveProposedMessage(int typeId, UUID origNodeId) {
assert origNodeId != null;
+ id = IgniteUuid.randomUuid();
this.origNodeId = origNodeId;
-
this.typeId = typeId;
}
@@ -74,7 +87,7 @@ public final class MetadataRemoveProposedMessage implements
DiscoveryCustomMessa
/** {@inheritDoc} */
@Nullable @Override public DiscoveryCustomMessage ackMessage() {
- return (status == ProposalStatus.SUCCESSFUL) ? new
MetadataRemoveAcceptedMessage(typeId) : null;
+ return !rejected ? new MetadataRemoveAcceptedMessage(typeId) : null;
}
/** {@inheritDoc} */
@@ -90,21 +103,21 @@ public final class MetadataRemoveProposedMessage
implements DiscoveryCustomMessa
}
/**
- * @param err Error caused this update to be rejected.
+ * @param errMsg Error message caused this update to be rejected.
*/
- void markRejected(BinaryObjectException err) {
- status = ProposalStatus.REJECTED;
- this.err = err;
+ void markRejected(String errMsg) {
+ rejected = true;
+ this.errMsg = errMsg;
}
/** */
boolean rejected() {
- return status == ProposalStatus.REJECTED;
+ return rejected;
}
/** */
BinaryObjectException rejectionError() {
- return err;
+ return new BinaryObjectException(errMsg);
}
/** */
@@ -127,17 +140,13 @@ public final class MetadataRemoveProposedMessage
implements DiscoveryCustomMessa
this.onCoordinator = onCoordinator;
}
- /** Message acceptance status. */
- private enum ProposalStatus {
- /** */
- SUCCESSFUL,
-
- /** */
- REJECTED
- }
-
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(MetadataRemoveProposedMessage.class, this);
}
+
+ /** {@inheritDoc} */
+ @Override public short directType() {
+ return 503;
+ }
}
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties
b/modules/core/src/main/resources/META-INF/classnames.properties
index dd613bffcd7..501daa170d1 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -1028,7 +1028,6 @@
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImp
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$3
org.apache.ignite.internal.processors.cache.binary.MetadataRemoveAcceptedMessage
org.apache.ignite.internal.processors.cache.binary.MetadataRemoveProposedMessage
-org.apache.ignite.internal.processors.cache.binary.MetadataRemoveProposedMessage$ProposalStatus
org.apache.ignite.internal.processors.cache.binary.MetadataRequestMessage
org.apache.ignite.internal.processors.cache.binary.MetadataResponseMessage
org.apache.ignite.internal.processors.cache.binary.MetadataUpdateAcceptedMessage