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 f15a181026a50..6ca9c3e58a56a 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 @@ -41,6 +41,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.marshaller.MappingAcceptedMessage; +import org.apache.ignite.internal.processors.marshaller.MappingAcceptedMessageSerializer; import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage; import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessageSerializer; import org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessage; @@ -168,5 +170,6 @@ public class DiscoveryMessageFactory implements MessageFactoryProvider { new TxTimeoutOnPartitionMapExchangeChangeMessageSerializer()); factory.register((short)510, UserAcceptedMessage::new, new UserAcceptedMessageSerializer()); factory.register((short)511, UserProposedMessage::new, new UserProposedMessageSerializer()); + factory.register((short)512, MappingAcceptedMessage::new, new MappingAcceptedMessageSerializer()); } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java index 7af0559752b3c..12f99f5f503f6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java @@ -17,12 +17,14 @@ package org.apache.ignite.internal.processors.marshaller; +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; /** @@ -30,21 +32,39 @@ * * If any nodes were waiting for this mapping to be accepted they will be unblocked on receiving this message. */ -public class MappingAcceptedMessage implements DiscoveryCustomMessage { +public class MappingAcceptedMessage implements DiscoveryCustomMessage, Message { /** */ private static final long serialVersionUID = 0L; /** */ - private final IgniteUuid id = IgniteUuid.randomUuid(); + @Order(0) + IgniteUuid id; /** */ - private final MarshallerMappingItem item; + @Order(1) + byte platformId; + + /** */ + @Order(2) + int typeId; + + /** */ + @Order(3) + String clsName; + + /** */ + public MappingAcceptedMessage() { + // No-op. + } /** * @param item Item. */ MappingAcceptedMessage(MarshallerMappingItem item) { - this.item = item; + id = IgniteUuid.randomUuid(); + platformId = item.platformId(); + typeId = item.typeId(); + clsName = item.className(); } /** {@inheritDoc} */ @@ -69,8 +89,13 @@ public class MappingAcceptedMessage implements DiscoveryCustomMessage { } /** */ - MarshallerMappingItem getMappingItem() { - return item; + public MarshallerMappingItem getMappingItem() { + return new MarshallerMappingItem(platformId, typeId, clsName); + } + + /** {@inheritDoc} */ + @Override public short directType() { + return 512; } /** {@inheritDoc} */ diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteMarshallerCacheClientRequestsMappingTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteMarshallerCacheClientRequestsMappingTest.java index 5dc0d6bf69e5d..658c56872e66c 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteMarshallerCacheClientRequestsMappingTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteMarshallerCacheClientRequestsMappingTest.java @@ -168,7 +168,7 @@ private void doTestMarshallingBinaryMappingsLoadedFromClient(boolean receiveMeta DiscoveryCustomMessage delegate = U.unwrapCustomMessage(evtMsg.message()); if (delegate instanceof MappingAcceptedMessage) { - MarshallerMappingItem item = GridTestUtils.getFieldValue(delegate, "item"); + MarshallerMappingItem item = ((MappingAcceptedMessage)delegate).getMappingItem(); if (item.className().equals(PERSON_CLASS_NAME) || item.className().equals(ORGANIZATION_CLASS_NAME) ||