Skip to content

Commit 8eda617

Browse files
authored
IGNITE-28052 Use MessageSerializer for InitMessage (#12912)
1 parent 822c90b commit 8eda617

20 files changed

Lines changed: 460 additions & 227 deletions

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919

2020
import org.apache.ignite.internal.managers.communication.ErrorMessage;
2121
import org.apache.ignite.internal.managers.communication.ErrorMessageMarshallableSerializer;
22+
import org.apache.ignite.internal.managers.encryption.ChangeCacheEncryptionRequest;
23+
import org.apache.ignite.internal.managers.encryption.ChangeCacheEncryptionRequestSerializer;
24+
import org.apache.ignite.internal.managers.encryption.MasterKeyChangeRequest;
25+
import org.apache.ignite.internal.managers.encryption.MasterKeyChangeRequestSerializer;
2226
import org.apache.ignite.internal.processors.authentication.User;
2327
import org.apache.ignite.internal.processors.authentication.UserAcceptedMessage;
2428
import org.apache.ignite.internal.processors.authentication.UserAcceptedMessageSerializer;
@@ -55,18 +59,28 @@
5559
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotCheckHandlersResponseSerializer;
5660
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotCheckPartitionHashesResponse;
5761
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotCheckPartitionHashesResponseMarshallableSerializer;
62+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotCheckProcessRequest;
63+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotCheckProcessRequestSerializer;
5864
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotCheckResponse;
5965
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotCheckResponseSerializer;
6066
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotHandlerResult;
6167
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotHandlerResultSerializer;
6268
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMetadataResponse;
6369
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMetadataResponseMarshallableSerializer;
70+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotOperationEndRequest;
71+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotOperationEndRequestSerializer;
72+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotOperationRequest;
73+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotOperationRequestSerializer;
6474
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotOperationResponse;
6575
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotOperationResponseSerializer;
6676
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotPartitionsVerifyHandlerResponse;
6777
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotPartitionsVerifyHandlerResponseMarshallableSerializer;
6878
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreOperationResponse;
6979
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreOperationResponseMarshallableSerializer;
80+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreStartRequest;
81+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreStartRequestSerializer;
82+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotStartDiscoveryMessage;
83+
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotStartDiscoveryMessageSerializer;
7084
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
7185
import org.apache.ignite.internal.processors.cache.version.GridCacheVersionSerializer;
7286
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateFinishMessage;
@@ -107,6 +121,8 @@
107121
import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperationSerializer;
108122
import org.apache.ignite.internal.util.distributed.FullMessage;
109123
import org.apache.ignite.internal.util.distributed.FullMessageSerializer;
124+
import org.apache.ignite.internal.util.distributed.InitMessage;
125+
import org.apache.ignite.internal.util.distributed.InitMessageSerializer;
110126
import org.apache.ignite.marshaller.Marshaller;
111127
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
112128
import org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider;
@@ -264,6 +280,14 @@ public DiscoveryMessageFactory(Marshaller marsh, ClassLoader clsLdr) {
264280
factory.register((short)29, TcpDiscoveryNodeAddedMessage::new,
265281
new TcpDiscoveryNodeAddedMessageMarshallableSerializer(marsh, clsLdr));
266282
factory.register((short)30, FullMessage::new, new FullMessageSerializer());
283+
factory.register((short)31, InitMessage::new, new InitMessageSerializer());
284+
factory.register((short)32, SnapshotStartDiscoveryMessage::new, new SnapshotStartDiscoveryMessageSerializer());
285+
factory.register((short)33, SnapshotCheckProcessRequest::new, new SnapshotCheckProcessRequestSerializer());
286+
factory.register((short)34, SnapshotOperationRequest::new, new SnapshotOperationRequestSerializer());
287+
factory.register((short)35, MasterKeyChangeRequest::new, new MasterKeyChangeRequestSerializer());
288+
factory.register((short)36, SnapshotOperationEndRequest::new, new SnapshotOperationEndRequestSerializer());
289+
factory.register((short)37, SnapshotRestoreStartRequest::new, new SnapshotRestoreStartRequestSerializer());
290+
factory.register((short)38, ChangeCacheEncryptionRequest::new, new ChangeCacheEncryptionRequestSerializer());
267291

268292
factory.register((short)86, GridCacheVersion::new, new GridCacheVersionSerializer());
269293

modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/ChangeCacheEncryptionRequest.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,32 +17,41 @@
1717

1818
package org.apache.ignite.internal.managers.encryption;
1919

20-
import java.io.Serializable;
2120
import java.util.Objects;
2221
import java.util.UUID;
22+
import org.apache.ignite.internal.Order;
23+
import org.apache.ignite.plugin.extensions.communication.Message;
24+
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
2325

2426
/**
2527
* Change cache group encryption key request.
2628
*/
2729
@SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
28-
public class ChangeCacheEncryptionRequest implements Serializable {
29-
/** Serial version uid. */
30-
private static final long serialVersionUID = 0L;
31-
30+
public class ChangeCacheEncryptionRequest implements Message {
3231
/** Request ID. */
33-
private final UUID reqId = UUID.randomUUID();
32+
@Order(0)
33+
UUID reqId;
3434

3535
/** Cache group IDs. */
36-
private final int[] grpIds;
36+
@Order(1)
37+
int[] grpIds;
3738

3839
/** Encryption keys. */
39-
private final byte[][] keys;
40+
@Order(2)
41+
byte[][] keys;
4042

4143
/** Key identifiers. */
42-
private final byte[] keyIds;
44+
@Order(3)
45+
byte[] keyIds;
4346

4447
/** Master key digest. */
45-
private final byte[] masterKeyDigest;
48+
@Order(4)
49+
byte[] masterKeyDigest;
50+
51+
/** Default constructor for {@link MessageFactory}. */
52+
public ChangeCacheEncryptionRequest() {
53+
// No-op.
54+
}
4655

4756
/**
4857
* @param grpIds Cache group IDs.
@@ -51,6 +60,7 @@ public class ChangeCacheEncryptionRequest implements Serializable {
5160
* @param masterKeyDigest Master key digest.
5261
*/
5362
public ChangeCacheEncryptionRequest(int[] grpIds, byte[][] keys, byte[] keyIds, byte[] masterKeyDigest) {
63+
this.reqId = UUID.randomUUID();
5464
this.grpIds = grpIds;
5565
this.keys = keys;
5666
this.keyIds = keyIds;
@@ -103,6 +113,11 @@ public byte[] masterKeyDigest() {
103113
return Objects.equals(reqId, ((ChangeCacheEncryptionRequest)o).reqId);
104114
}
105115

116+
/** {@inheritDoc} */
117+
@Override public short directType() {
118+
return 38;
119+
}
120+
106121
/** {@inheritDoc} */
107122
@Override public int hashCode() {
108123
return Objects.hash(reqId);

modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GridEncryptionManager.java

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1748,77 +1748,6 @@ private String decryptKeyName(byte[] data) {
17481748
});
17491749
}
17501750

1751-
/** Master key change request. */
1752-
private static class MasterKeyChangeRequest implements Serializable {
1753-
/** Serial version uid. */
1754-
private static final long serialVersionUID = 0L;
1755-
1756-
/** Request id. */
1757-
private final UUID reqId;
1758-
1759-
/** Encrypted master key name. */
1760-
private final byte[] encKeyName;
1761-
1762-
/** Master key digest. */
1763-
private final byte[] digest;
1764-
1765-
/**
1766-
* @param reqId Request id.
1767-
* @param encKeyName Encrypted master key name.
1768-
* @param digest Master key digest.
1769-
*/
1770-
private MasterKeyChangeRequest(UUID reqId, byte[] encKeyName, byte[] digest) {
1771-
this.reqId = reqId;
1772-
this.encKeyName = encKeyName;
1773-
this.digest = digest;
1774-
}
1775-
1776-
/** @return Request id. */
1777-
UUID requestId() {
1778-
return reqId;
1779-
}
1780-
1781-
/** @return Encrypted master key name. */
1782-
byte[] encKeyName() {
1783-
return encKeyName;
1784-
}
1785-
1786-
/** @return Master key digest. */
1787-
byte[] digest() {
1788-
return digest;
1789-
}
1790-
1791-
/** {@inheritDoc} */
1792-
@Override public boolean equals(Object o) {
1793-
if (this == o)
1794-
return true;
1795-
1796-
if (!(o instanceof MasterKeyChangeRequest))
1797-
return false;
1798-
1799-
MasterKeyChangeRequest key = (MasterKeyChangeRequest)o;
1800-
1801-
return Arrays.equals(encKeyName, key.encKeyName) &&
1802-
Arrays.equals(digest, key.digest) &&
1803-
Objects.equals(reqId, key.reqId);
1804-
}
1805-
1806-
/** {@inheritDoc} */
1807-
@Override public int hashCode() {
1808-
int res = Objects.hash(reqId);
1809-
1810-
res = 31 * res + Arrays.hashCode(encKeyName);
1811-
res = 31 * res + Arrays.hashCode(digest);
1812-
1813-
return res;
1814-
}
1815-
1816-
/** {@inheritDoc} */
1817-
@Override public String toString() {
1818-
return S.toString(MasterKeyChangeRequest.class, this);
1819-
}
1820-
}
1821-
18221751
/** */
18231752
protected static class NodeEncryptionKeys implements Serializable {
18241753
/** */
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.ignite.internal.managers.encryption;
19+
20+
import java.util.Arrays;
21+
import java.util.Objects;
22+
import java.util.UUID;
23+
import org.apache.ignite.internal.Order;
24+
import org.apache.ignite.internal.util.typedef.internal.S;
25+
import org.apache.ignite.plugin.extensions.communication.Message;
26+
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
27+
28+
/** Master key change request. */
29+
public class MasterKeyChangeRequest implements Message {
30+
/** Request id. */
31+
@Order(0)
32+
UUID reqId;
33+
34+
/** Encrypted master key name. */
35+
@Order(1)
36+
byte[] encKeyName;
37+
38+
/** Master key digest. */
39+
@Order(2)
40+
byte[] digest;
41+
42+
/** Default constructor for {@link MessageFactory}. */
43+
public MasterKeyChangeRequest() {
44+
// No-op.
45+
}
46+
47+
/**
48+
* @param reqId Request id.
49+
* @param encKeyName Encrypted master key name.
50+
* @param digest Master key digest.
51+
*/
52+
public MasterKeyChangeRequest(UUID reqId, byte[] encKeyName, byte[] digest) {
53+
this.reqId = reqId;
54+
this.encKeyName = encKeyName;
55+
this.digest = digest;
56+
}
57+
58+
/** @return Request id. */
59+
UUID requestId() {
60+
return reqId;
61+
}
62+
63+
/** @return Encrypted master key name. */
64+
byte[] encKeyName() {
65+
return encKeyName;
66+
}
67+
68+
/** @return Master key digest. */
69+
byte[] digest() {
70+
return digest;
71+
}
72+
73+
/** {@inheritDoc} */
74+
@Override public boolean equals(Object o) {
75+
if (this == o)
76+
return true;
77+
78+
if (!(o instanceof MasterKeyChangeRequest))
79+
return false;
80+
81+
MasterKeyChangeRequest key = (MasterKeyChangeRequest)o;
82+
83+
return Arrays.equals(encKeyName, key.encKeyName) &&
84+
Arrays.equals(digest, key.digest) &&
85+
Objects.equals(reqId, key.reqId);
86+
}
87+
88+
/** {@inheritDoc} */
89+
@Override public int hashCode() {
90+
int res = Objects.hash(reqId);
91+
92+
res = 31 * res + Arrays.hashCode(encKeyName);
93+
res = 31 * res + Arrays.hashCode(digest);
94+
95+
return res;
96+
}
97+
98+
/** {@inheritDoc} */
99+
@Override public short directType() {
100+
return 35;
101+
}
102+
103+
/** {@inheritDoc} */
104+
@Override public String toString() {
105+
return S.toString(MasterKeyChangeRequest.class, this);
106+
}
107+
}

modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/AbstractSnapshotOperationRequest.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,46 +17,52 @@
1717

1818
package org.apache.ignite.internal.processors.cache.persistence.snapshot;
1919

20-
import java.io.Serializable;
2120
import java.util.Collection;
2221
import java.util.HashSet;
2322
import java.util.Set;
2423
import java.util.UUID;
24+
import org.apache.ignite.internal.Order;
2525
import org.apache.ignite.internal.util.distributed.DistributedProcess;
2626
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
2727
import org.apache.ignite.internal.util.typedef.internal.S;
28+
import org.apache.ignite.plugin.extensions.communication.Message;
29+
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
2830
import org.jetbrains.annotations.Nullable;
2931

3032
/**
3133
* Snapshot operation start request for {@link DistributedProcess} initiate message.
3234
*/
33-
abstract class AbstractSnapshotOperationRequest implements Serializable {
34-
/** Serial version uid. */
35-
private static final long serialVersionUID = 0L;
36-
35+
abstract class AbstractSnapshotOperationRequest implements Message {
3736
/** Request ID. */
38-
@GridToStringInclude
39-
private final UUID reqId;
37+
@Order(0)
38+
UUID reqId;
4039

4140
/** Snapshot name. */
42-
@GridToStringInclude
43-
private final String snpName;
41+
@Order(1)
42+
String snpName;
4443

4544
/** Snapshot directory path. */
46-
@GridToStringInclude
47-
private final String snpPath;
45+
@Order(2)
46+
String snpPath;
4847

4948
/** Collection of cache group names. */
49+
@Order(3)
5050
@GridToStringInclude
51-
private final Collection<String> grps;
51+
Collection<String> grps;
5252

5353
/** Start time. */
54-
@GridToStringInclude
55-
private final long startTime;
54+
@Order(4)
55+
long startTime;
5656

5757
/** IDs of the nodes that must be alive to complete the operation. */
5858
@GridToStringInclude
59-
private final Set<UUID> nodes;
59+
@Order(5)
60+
Set<UUID> nodes;
61+
62+
/** Default constructor for {@link MessageFactory}. */
63+
public AbstractSnapshotOperationRequest() {
64+
// No-op.
65+
}
6066

6167
/**
6268
* @param reqId Request ID.

0 commit comments

Comments
 (0)