Skip to content

Commit f6dacaa

Browse files
authored
IGNITE-27971 Use message serializer for MappingAcceptedMessage and MappingProposedMessage (#12811)
1 parent b5da39c commit f6dacaa

5 files changed

Lines changed: 76 additions & 23 deletions

File tree

modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@
5151
import org.apache.ignite.internal.processors.continuous.StopRoutineAckDiscoveryMessageSerializer;
5252
import org.apache.ignite.internal.processors.continuous.StopRoutineDiscoveryMessage;
5353
import org.apache.ignite.internal.processors.continuous.StopRoutineDiscoveryMessageSerializer;
54+
import org.apache.ignite.internal.processors.marshaller.MappingAcceptedMessage;
55+
import org.apache.ignite.internal.processors.marshaller.MappingAcceptedMessageSerializer;
56+
import org.apache.ignite.internal.processors.marshaller.MappingProposedMessage;
57+
import org.apache.ignite.internal.processors.marshaller.MappingProposedMessageSerializer;
58+
import org.apache.ignite.internal.processors.marshaller.MarshallerMappingItem;
59+
import org.apache.ignite.internal.processors.marshaller.MarshallerMappingItemSerializer;
5460
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageCasAckMessage;
5561
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageCasAckMessageSerializer;
5662
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageCasMessage;
@@ -220,5 +226,9 @@ public DiscoveryMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMa
220226
factory.register((short)514, StopRoutineDiscoveryMessage::new, new StopRoutineDiscoveryMessageSerializer());
221227
factory.register((short)515, CacheAffinityChangeMessage::new, new CacheAffinityChangeMessageSerializer());
222228
factory.register((short)516, ClientCacheChangeDiscoveryMessage::new, new ClientCacheChangeDiscoveryMessageSerializer());
229+
factory.register((short)517, MappingAcceptedMessage::new, new MappingAcceptedMessageSerializer());
230+
factory.register((short)518, MappingProposedMessage::new, new MappingProposedMessageSerializer());
231+
factory.register((short)519, MarshallerMappingItem::new, new MarshallerMappingItemSerializer());
232+
223233
}
224234
}

modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,40 @@
1717

1818
package org.apache.ignite.internal.processors.marshaller;
1919

20+
import org.apache.ignite.internal.Order;
2021
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
2122
import org.apache.ignite.internal.util.typedef.internal.S;
2223
import org.apache.ignite.lang.IgniteUuid;
24+
import org.apache.ignite.plugin.extensions.communication.Message;
2325
import org.jetbrains.annotations.Nullable;
2426

2527
/**
2628
* Is sent as an acknowledgement for successfully proposed new mapping (see {@link MappingProposedMessage}).
2729
*
2830
* If any nodes were waiting for this mapping to be accepted they will be unblocked on receiving this message.
2931
*/
30-
public class MappingAcceptedMessage implements DiscoveryCustomMessage {
32+
public class MappingAcceptedMessage implements DiscoveryCustomMessage, Message {
3133
/** */
3234
private static final long serialVersionUID = 0L;
3335

3436
/** */
35-
private final IgniteUuid id = IgniteUuid.randomUuid();
37+
@Order(0)
38+
IgniteUuid id;
3639

3740
/** */
38-
private final MarshallerMappingItem item;
41+
@Order(1)
42+
MarshallerMappingItem item;
43+
44+
/** */
45+
public MappingAcceptedMessage() {
46+
// No-op.
47+
}
3948

4049
/**
4150
* @param item Item.
4251
*/
4352
MappingAcceptedMessage(MarshallerMappingItem item) {
44-
this.item = item;
53+
id = IgniteUuid.randomUuid();
4554
}
4655

4756
/** {@inheritDoc} */
@@ -55,10 +64,15 @@ public class MappingAcceptedMessage implements DiscoveryCustomMessage {
5564
}
5665

5766
/** */
58-
MarshallerMappingItem getMappingItem() {
67+
public MarshallerMappingItem getMappingItem() {
5968
return item;
6069
}
6170

71+
/** {@inheritDoc} */
72+
@Override public short directType() {
73+
return 517;
74+
}
75+
6276
/** {@inheritDoc} */
6377
@Override public String toString() {
6478
return S.toString(MappingAcceptedMessage.class, this);

modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
package org.apache.ignite.internal.processors.marshaller;
1919

2020
import java.util.UUID;
21+
import org.apache.ignite.internal.Order;
2122
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
22-
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
2323
import org.apache.ignite.internal.util.typedef.internal.S;
2424
import org.apache.ignite.lang.IgniteUuid;
25+
import org.apache.ignite.plugin.extensions.communication.Message;
2526
import org.jetbrains.annotations.Nullable;
2627

2728
/**
@@ -33,9 +34,9 @@
3334
* When it completes a pass around the cluster ring with no conflicts observed,
3435
* {@link MappingAcceptedMessage} is sent as an acknowledgement that everything is fine.
3536
*/
36-
public class MappingProposedMessage implements DiscoveryCustomMessage {
37+
public class MappingProposedMessage implements DiscoveryCustomMessage, Message {
3738
/** */
38-
private enum ProposalStatus {
39+
enum ProposalStatus {
3940
/** */
4041
SUCCESSFUL,
4142
/** */
@@ -48,20 +49,29 @@ private enum ProposalStatus {
4849
private static final long serialVersionUID = 0L;
4950

5051
/** */
51-
private final IgniteUuid id = IgniteUuid.randomUuid();
52+
@Order(0)
53+
IgniteUuid id;
5254

5355
/** */
54-
private final UUID origNodeId;
56+
@Order(1)
57+
UUID origNodeId;
5558

5659
/** */
57-
@GridToStringInclude
58-
private final MarshallerMappingItem mappingItem;
60+
@Order(2)
61+
MarshallerMappingItem mappingItem;
5962

6063
/** */
61-
private ProposalStatus status = ProposalStatus.SUCCESSFUL;
64+
@Order(3)
65+
ProposalStatus status;
6266

6367
/** */
64-
private String conflictingClsName;
68+
@Order(4)
69+
String conflictingClsName;
70+
71+
/** */
72+
public MappingProposedMessage() {
73+
// No-op.
74+
}
6575

6676
/**
6777
* @param mappingItem Mapping item.
@@ -70,8 +80,10 @@ private enum ProposalStatus {
7080
MappingProposedMessage(MarshallerMappingItem mappingItem, UUID origNodeId) {
7181
assert origNodeId != null;
7282

83+
id = IgniteUuid.randomUuid();
7384
this.mappingItem = mappingItem;
7485
this.origNodeId = origNodeId;
86+
status = ProposalStatus.SUCCESSFUL;
7587
}
7688

7789
/** {@inheritDoc} */
@@ -84,7 +96,7 @@ private enum ProposalStatus {
8496
*/
8597
@Nullable @Override public DiscoveryCustomMessage ackMessage() {
8698
if (status == ProposalStatus.SUCCESSFUL)
87-
return new MappingAcceptedMessage(mappingItem);
99+
return new MappingAcceptedMessage(mappingItem());
88100
else
89101
return null;
90102
}
@@ -130,6 +142,11 @@ String conflictingClassName() {
130142
return conflictingClsName;
131143
}
132144

145+
/** {@inheritDoc} */
146+
@Override public short directType() {
147+
return 518;
148+
}
149+
133150
/** {@inheritDoc} */
134151
@Override public String toString() {
135152
return S.toString(MappingProposedMessage.class, this);

modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerMappingItem.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,33 @@
1717

1818
package org.apache.ignite.internal.processors.marshaller;
1919

20-
import java.io.Serializable;
2120
import java.util.Objects;
21+
import org.apache.ignite.internal.Order;
22+
import org.apache.ignite.plugin.extensions.communication.Message;
2223
import org.jetbrains.annotations.Nullable;
2324

2425
/**
2526
* Used to exchange mapping information on new mapping added or missing mapping requested flows.
2627
* See {@link GridMarshallerMappingProcessor} javadoc for more information.
2728
*/
28-
public final class MarshallerMappingItem implements Serializable {
29+
public final class MarshallerMappingItem implements Message {
2930
/** */
30-
private static final long serialVersionUID = 0L;
31+
@Order(0)
32+
byte platformId;
3133

3234
/** */
33-
private final byte platformId;
35+
@Order(1)
36+
int typeId;
3437

3538
/** */
36-
private final int typeId;
39+
@Order(2)
40+
String clsName;
3741

38-
/** */
39-
private String clsName;
42+
/**
43+
* no-op
44+
*/
45+
public MarshallerMappingItem() {
46+
}
4047

4148
/**
4249
* Class name may be null when instance is created to request missing mapping from cluster.
@@ -97,4 +104,9 @@ public void className(String clsName) {
97104
@Override public String toString() {
98105
return "[platformId: " + platformId + ", typeId:" + typeId + ", clsName: " + clsName + "]";
99106
}
107+
108+
/** {@inheritDoc} */
109+
@Override public short directType() {
110+
return 519;
111+
}
100112
}

modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteMarshallerCacheClientRequestsMappingTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ private void doTestMarshallingBinaryMappingsLoadedFromClient(boolean receiveMeta
168168
DiscoveryCustomMessage delegate = U.unwrapCustomMessage(evtMsg.message());
169169

170170
if (delegate instanceof MappingAcceptedMessage) {
171-
MarshallerMappingItem item = GridTestUtils.getFieldValue(delegate, "item");
171+
MarshallerMappingItem item = ((MappingAcceptedMessage)delegate).getMappingItem();
172172

173173
if (item.className().equals(PERSON_CLASS_NAME) ||
174174
item.className().equals(ORGANIZATION_CLASS_NAME) ||

0 commit comments

Comments
 (0)