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 7c2a991f18e6b..e6d3074892849 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 @@ -57,6 +57,8 @@ import org.apache.ignite.internal.processors.cache.binary.MetadataRemoveProposedMessageSerializer; import org.apache.ignite.internal.processors.cache.binary.MetadataUpdateAcceptedMessage; import org.apache.ignite.internal.processors.cache.binary.MetadataUpdateAcceptedMessageSerializer; +import org.apache.ignite.internal.processors.cache.binary.MetadataUpdateProposedMessage; +import org.apache.ignite.internal.processors.cache.binary.MetadataUpdateProposedMessageMarshallableSerializer; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionExchangeId; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionExchangeIdSerializer; import org.apache.ignite.internal.processors.cache.persistence.snapshot.DataStreamerUpdatesHandlerResult; @@ -379,5 +381,6 @@ public DiscoveryMessageFactory(Marshaller marsh, ClassLoader clsLdr) { factory.register(540, StartRoutineDiscoveryMessage::new, new StartRoutineDiscoveryMessageSerializer()); factory.register(541, StartRoutineAckDiscoveryMessage::new, new StartRoutineAckDiscoveryMessageSerializer()); factory.register(542, StartRoutineDiscoveryMessageV2::new, new StartRoutineDiscoveryMessageV2Serializer()); + factory.register(543, MetadataUpdateProposedMessage::new, new MetadataUpdateProposedMessageMarshallableSerializer(marsh, clsLdr)); } } 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 0cfb2d96768b9..7c6c8a9dbc005 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 @@ -550,7 +550,7 @@ private final class MetadataUpdateProposedListener implements CustomEventListene //coordinator receives update request if (metaVerInfo != null) { if (metaVerInfo.removing()) { - msg.markRejected(new BinaryObjectException("The type is removing now [typeId=" + typeId + ']')); + msg.markRejected("The type is removing now [typeId=" + typeId + ']'); pendingVer = REMOVED_VERSION; acceptedVer = REMOVED_VERSION; @@ -589,7 +589,7 @@ private final class MetadataUpdateProposedListener implements CustomEventListene catch (BinaryObjectException err) { log.warning("Exception with merging metadata for typeId: " + typeId, err); - msg.markRejected(err); + msg.markRejected(err.getMessage()); } } } @@ -602,7 +602,7 @@ private final class MetadataUpdateProposedListener implements CustomEventListene MetadataUpdateResultFuture fut = unlabeledFutures.poll(); if (msg.rejected()) - fut.onDone(MetadataUpdateResult.createFailureResult(msg.rejectionError())); + fut.onDone(MetadataUpdateResult.createFailureResult(msg.rejectionErrorMessage())); else { if (clientNode) { boolean success = casBinaryMetadata(typeId, new BinaryMetadataVersionInfo(msg.metadata(), pendingVer, acceptedVer)); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java index b73be5f2c1300..2618b4dc3c184 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java @@ -17,21 +17,25 @@ package org.apache.ignite.internal.processors.cache.binary; import java.util.UUID; -import org.apache.ignite.binary.BinaryObjectException; +import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.binary.BinaryMetadata; import org.apache.ignite.internal.binary.BinaryMetadataHandler; import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage; import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; import org.jetbrains.annotations.Nullable; /** * MetadataUpdateProposedMessage and {@link MetadataUpdateAcceptedMessage} messages make a basis for * discovery-based protocol for exchanging {@link BinaryMetadata metadata} describing objects in binary format stored in Ignite caches. - * + *
* All interactions with binary metadata are performed through {@link BinaryMetadataHandler} * interface implemented in {@link CacheObjectBinaryProcessorImpl} processor. - * + *
* Protocol works as follows: *