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

Reply via email to