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 1e31e1bf0790d..c9fc55299ae83 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 @@ -51,6 +51,12 @@ import org.apache.ignite.internal.processors.continuous.StopRoutineAckDiscoveryMessageSerializer; import org.apache.ignite.internal.processors.continuous.StopRoutineDiscoveryMessage; import org.apache.ignite.internal.processors.continuous.StopRoutineDiscoveryMessageSerializer; +import org.apache.ignite.internal.processors.marshaller.MappingAcceptedMessage; +import org.apache.ignite.internal.processors.marshaller.MappingAcceptedMessageSerializer; +import org.apache.ignite.internal.processors.marshaller.MappingProposedMessage; +import org.apache.ignite.internal.processors.marshaller.MappingProposedMessageSerializer; +import org.apache.ignite.internal.processors.marshaller.MarshallerMappingItem; +import org.apache.ignite.internal.processors.marshaller.MarshallerMappingItemSerializer; import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageCasAckMessage; import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageCasAckMessageSerializer; import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageCasMessage; @@ -223,5 +229,9 @@ public DiscoveryMessageFactory(@Nullable Marshaller cstDataMarshall, @Nullable C factory.register((short)514, StopRoutineDiscoveryMessage::new, new StopRoutineDiscoveryMessageSerializer()); factory.register((short)515, CacheAffinityChangeMessage::new, new CacheAffinityChangeMessageSerializer()); factory.register((short)516, ClientCacheChangeDiscoveryMessage::new, new ClientCacheChangeDiscoveryMessageSerializer()); + factory.register((short)517, MappingAcceptedMessage::new, new MappingAcceptedMessageSerializer()); + factory.register((short)518, MappingProposedMessage::new, new MappingProposedMessageSerializer()); + factory.register((short)519, MarshallerMappingItem::new, new MarshallerMappingItemSerializer()); + } } 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 e40815f31f469..9223aa2cb26ec 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,9 +17,11 @@ package org.apache.ignite.internal.processors.marshaller; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage; 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; /** @@ -27,21 +29,28 @@ * * 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) + MarshallerMappingItem item; + + /** */ + public MappingAcceptedMessage() { + // No-op. + } /** * @param item Item. */ MappingAcceptedMessage(MarshallerMappingItem item) { - this.item = item; + id = IgniteUuid.randomUuid(); } /** {@inheritDoc} */ @@ -55,10 +64,15 @@ public class MappingAcceptedMessage implements DiscoveryCustomMessage { } /** */ - MarshallerMappingItem getMappingItem() { + public MarshallerMappingItem getMappingItem() { return item; } + /** {@inheritDoc} */ + @Override public short directType() { + return 517; + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(MappingAcceptedMessage.class, this); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java index 33a2168c2262c..2e2a6cb5e69ee 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java @@ -18,10 +18,11 @@ package org.apache.ignite.internal.processors.marshaller; import java.util.UUID; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage; -import org.apache.ignite.internal.util.tostring.GridToStringInclude; 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,9 +34,9 @@ * When it completes a pass around the cluster ring with no conflicts observed, * {@link MappingAcceptedMessage} is sent as an acknowledgement that everything is fine. */ -public class MappingProposedMessage implements DiscoveryCustomMessage { +public class MappingProposedMessage implements DiscoveryCustomMessage, Message { /** */ - private enum ProposalStatus { + enum ProposalStatus { /** */ SUCCESSFUL, /** */ @@ -48,20 +49,29 @@ private enum ProposalStatus { private static final long serialVersionUID = 0L; /** */ - private final IgniteUuid id = IgniteUuid.randomUuid(); + @Order(0) + IgniteUuid id; /** */ - private final UUID origNodeId; + @Order(1) + UUID origNodeId; /** */ - @GridToStringInclude - private final MarshallerMappingItem mappingItem; + @Order(2) + MarshallerMappingItem mappingItem; /** */ - private ProposalStatus status = ProposalStatus.SUCCESSFUL; + @Order(3) + ProposalStatus status; /** */ - private String conflictingClsName; + @Order(4) + String conflictingClsName; + + /** */ + public MappingProposedMessage() { + // No-op. + } /** * @param mappingItem Mapping item. @@ -70,8 +80,10 @@ private enum ProposalStatus { MappingProposedMessage(MarshallerMappingItem mappingItem, UUID origNodeId) { assert origNodeId != null; + id = IgniteUuid.randomUuid(); this.mappingItem = mappingItem; this.origNodeId = origNodeId; + status = ProposalStatus.SUCCESSFUL; } /** {@inheritDoc} */ @@ -84,7 +96,7 @@ private enum ProposalStatus { */ @Nullable @Override public DiscoveryCustomMessage ackMessage() { if (status == ProposalStatus.SUCCESSFUL) - return new MappingAcceptedMessage(mappingItem); + return new MappingAcceptedMessage(mappingItem()); else return null; } @@ -130,6 +142,11 @@ String conflictingClassName() { return conflictingClsName; } + /** {@inheritDoc} */ + @Override public short directType() { + return 518; + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(MappingProposedMessage.class, this); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerMappingItem.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerMappingItem.java index f715eb2fa7f6a..6414d545e7377 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerMappingItem.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerMappingItem.java @@ -17,26 +17,33 @@ package org.apache.ignite.internal.processors.marshaller; -import java.io.Serializable; import java.util.Objects; +import org.apache.ignite.internal.Order; +import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; /** * Used to exchange mapping information on new mapping added or missing mapping requested flows. * See {@link GridMarshallerMappingProcessor} javadoc for more information. */ -public final class MarshallerMappingItem implements Serializable { +public final class MarshallerMappingItem implements Message { /** */ - private static final long serialVersionUID = 0L; + @Order(0) + byte platformId; /** */ - private final byte platformId; + @Order(1) + int typeId; /** */ - private final int typeId; + @Order(2) + String clsName; - /** */ - private String clsName; + /** + * no-op + */ + public MarshallerMappingItem() { + } /** * Class name may be null when instance is created to request missing mapping from cluster. @@ -97,4 +104,9 @@ public void className(String clsName) { @Override public String toString() { return "[platformId: " + platformId + ", typeId:" + typeId + ", clsName: " + clsName + "]"; } + + /** {@inheritDoc} */ + @Override public short directType() { + return 519; + } } 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) ||