Skip to content

Commit 5a21df7

Browse files
committed
IGNITE-27559 Use MessageSerializer for SchemaAbstractOperation and successors
1 parent e79d372 commit 5a21df7

12 files changed

Lines changed: 219 additions & 124 deletions

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,22 @@
5959
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateAckMessageSerializer;
6060
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateMessage;
6161
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateMessageSerializer;
62+
import org.apache.ignite.internal.processors.query.QueryField;
63+
import org.apache.ignite.internal.processors.query.QueryFieldMarshallableSerializer;
6264
import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage;
6365
import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessageSerializer;
6466
import org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessage;
6567
import org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessageSerializer;
68+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperation;
69+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperationMarshallableSerializer;
70+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation;
71+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperationSerializer;
72+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperation;
73+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperationSerializer;
74+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperation;
75+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperationMarshallableSerializer;
76+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperation;
77+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperationSerializer;
6678
import org.apache.ignite.marshaller.Marshaller;
6779
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
6880
import org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider;
@@ -152,6 +164,17 @@ public DiscoveryMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMa
152164

153165
/** {@inheritDoc} */
154166
@Override public void registerAll(MessageFactory factory) {
167+
factory.register((short)-115, SchemaAlterTableAddColumnOperation::new,
168+
new SchemaAlterTableAddColumnOperationSerializer());
169+
factory.register((short)-114, SchemaIndexCreateOperation::new,
170+
new SchemaIndexCreateOperationMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr));
171+
factory.register((short)-113, SchemaIndexDropOperation::new, new SchemaIndexDropOperationSerializer());
172+
factory.register((short)-112, SchemaAlterTableDropColumnOperation::new,
173+
new SchemaAlterTableDropColumnOperationSerializer());
174+
factory.register((short)-111, SchemaAddQueryEntityOperation::new,
175+
new SchemaAddQueryEntityOperationMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr));
176+
factory.register((short)-110, QueryField::new, new QueryFieldMarshallableSerializer(cstDataMarshall,
177+
cstDataMarshallClsLdr));
155178
factory.register((short)-109, User::new, new UserSerializer());
156179
factory.register((short)-108, UserManagementOperation::new, new UserManagementOperationSerializer());
157180
factory.register((short)-107, NodeSpecificData::new, new NodeSpecificDataSerializer());

modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,35 +18,53 @@
1818
package org.apache.ignite.internal.processors.query;
1919

2020
import java.io.Serializable;
21+
import org.apache.ignite.IgniteCheckedException;
22+
import org.apache.ignite.internal.Order;
2123
import org.apache.ignite.internal.util.typedef.internal.S;
24+
import org.apache.ignite.internal.util.typedef.internal.U;
25+
import org.apache.ignite.marshaller.Marshaller;
26+
import org.apache.ignite.plugin.extensions.communication.MarshallableMessage;
2227

2328
/**
2429
* Query field metadata.
2530
*/
26-
public class QueryField implements Serializable {
31+
public class QueryField implements Serializable, MarshallableMessage {
2732
/** */
2833
private static final long serialVersionUID = 0L;
2934

3035
/** Field name. */
31-
private final String name;
36+
@Order(0)
37+
String name;
3238

3339
/** Alias. */
34-
private final String alias;
40+
@Order(1)
41+
String alias;
3542

3643
/** Class name for this field's values. */
37-
private final String typeName;
44+
@Order(2)
45+
String typeName;
3846

3947
/** Nullable flag. */
40-
private final boolean nullable;
48+
@Order(3)
49+
boolean nullable;
4150

4251
/** Default value. */
43-
private final Object dfltValue;
52+
private Object dfltVal;
53+
54+
/** Serialized form of 'default value'. */
55+
@Order(4)
56+
transient byte[] dfltValBytes;
4457

4558
/** Precision. */
46-
private final int precision;
59+
@Order(5)
60+
int precision;
4761

4862
/** Scale. */
49-
private final int scale;
63+
@Order(6)
64+
int scale;
65+
66+
/** */
67+
public QueryField() { }
5068

5169
/**
5270
* @param name Field name.
@@ -61,39 +79,39 @@ public QueryField(String name, String typeName, boolean nullable) {
6179
* @param name Field name.
6280
* @param typeName Class name for this field's values.
6381
* @param nullable Nullable flag.
64-
* @param dfltValue Default value.
82+
* @param dfltVal Default value.
6583
*/
66-
public QueryField(String name, String typeName, boolean nullable, Object dfltValue) {
67-
this(name, typeName, nullable, dfltValue, -1, -1);
84+
public QueryField(String name, String typeName, boolean nullable, Object dfltVal) {
85+
this(name, typeName, nullable, dfltVal, -1, -1);
6886
}
6987

7088
/**
7189
* @param name Field name.
7290
* @param typeName Class name for this field's values.
7391
* @param nullable Nullable flag.
74-
* @param dfltValue Default value.
92+
* @param dfltVal Default value.
7593
* @param precision Precision.
7694
* @param scale Scale.
7795
*/
78-
public QueryField(String name, String typeName, boolean nullable, Object dfltValue, int precision, int scale) {
79-
this(name, typeName, null, nullable, dfltValue, precision, scale);
96+
public QueryField(String name, String typeName, boolean nullable, Object dfltVal, int precision, int scale) {
97+
this(name, typeName, null, nullable, dfltVal, precision, scale);
8098
}
8199

82100
/**
83101
* @param name Field name.
84102
* @param typeName Class name for this field's values.
85103
* @param alias Alias.
86104
* @param nullable Nullable flag.
87-
* @param dfltValue Default value.
105+
* @param dfltVal Default value.
88106
* @param precision Precision.
89107
* @param scale Scale.
90108
*/
91-
public QueryField(String name, String typeName, String alias, boolean nullable, Object dfltValue, int precision, int scale) {
109+
public QueryField(String name, String typeName, String alias, boolean nullable, Object dfltVal, int precision, int scale) {
92110
this.name = name;
93111
this.typeName = typeName;
94112
this.alias = alias;
95113
this.nullable = nullable;
96-
this.dfltValue = dfltValue;
114+
this.dfltVal = dfltVal;
97115
this.precision = precision;
98116
this.scale = scale;
99117
}
@@ -130,7 +148,7 @@ public boolean isNullable() {
130148
* @return Default value.
131149
*/
132150
public Object defaultValue() {
133-
return dfltValue;
151+
return dfltVal;
134152
}
135153

136154
/**
@@ -147,8 +165,25 @@ public int scale() {
147165
return scale;
148166
}
149167

168+
/** {@inheritDoc} */
169+
@Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException {
170+
if (dfltVal != null)
171+
dfltValBytes = U.marshal(marsh, dfltVal);
172+
}
173+
174+
/** {@inheritDoc} */
175+
@Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException {
176+
if (dfltValBytes != null)
177+
dfltVal = U.unmarshal(marsh, dfltValBytes, clsLdr);
178+
}
179+
150180
/** {@inheritDoc} */
151181
@Override public String toString() {
152182
return S.toString(QueryField.class, this);
153183
}
184+
185+
/** {@inheritDoc} */
186+
@Override public short directType() {
187+
return -110;
188+
}
154189
}

modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,13 @@
1717

1818
package org.apache.ignite.internal.processors.query.schema.message;
1919

20-
import org.apache.ignite.IgniteCheckedException;
21-
import org.apache.ignite.IgniteException;
2220
import org.apache.ignite.internal.Order;
2321
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
2422
import org.apache.ignite.internal.processors.query.schema.SchemaOperationException;
2523
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation;
2624
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
2725
import org.apache.ignite.internal.util.typedef.internal.S;
28-
import org.apache.ignite.internal.util.typedef.internal.U;
2926
import org.apache.ignite.lang.IgniteUuid;
30-
import org.apache.ignite.marshaller.Marshallers;
3127
import org.apache.ignite.plugin.extensions.communication.Message;
3228
import org.jetbrains.annotations.Nullable;
3329

@@ -44,22 +40,16 @@ public abstract class SchemaAbstractDiscoveryMessage implements DiscoveryCustomM
4440

4541
/** Operation. */
4642
@GridToStringInclude
47-
private SchemaAbstractOperation op;
48-
49-
/**
50-
* Operation bytes. Serialized reprezentation of schema operation.
51-
* TODO Should be removed in IGNITE-27559
52-
*/
53-
@Order(value = 1, method = "operationBytes")
54-
byte[] opBytes;
43+
@Order(1)
44+
SchemaAbstractOperation op;
5545

5646
/** Error message. */
5747
@Order(2)
58-
String errMsg;
48+
transient String errMsg;
5949

6050
/** Error code. */
6151
@Order(3)
62-
int errCode;
52+
transient int errCode;
6353

6454
/** Error. */
6555
SchemaOperationException err;
@@ -92,31 +82,7 @@ protected SchemaAbstractDiscoveryMessage(SchemaAbstractOperation op) {
9282
* @return Operation.
9383
*/
9484
public SchemaAbstractOperation operation() {
95-
try {
96-
return op != null ? op : U.unmarshal(Marshallers.jdk(), opBytes, null);
97-
}
98-
catch (IgniteCheckedException e) {
99-
throw new IgniteException("Failed to unmarshal schema operation", e);
100-
}
101-
}
102-
103-
/**
104-
* @return Operation bytes.
105-
*/
106-
public byte[] operationBytes() {
107-
try {
108-
return opBytes != null ? opBytes : U.marshal(Marshallers.jdk(), op);
109-
}
110-
catch (IgniteCheckedException e) {
111-
throw new IgniteException("Failed to marshal schema operation", e);
112-
}
113-
}
114-
115-
/**
116-
* @param opBytes Operation bytes.
117-
*/
118-
public void operationBytes(byte[] opBytes) {
119-
this.opBytes = opBytes;
85+
return op;
12086
}
12187

12288
/**

modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractAlterTableOperation.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,39 @@
1919

2020
import java.io.Serializable;
2121
import java.util.UUID;
22+
import org.apache.ignite.internal.Order;
2223
import org.apache.ignite.internal.util.typedef.internal.S;
24+
import org.apache.ignite.plugin.extensions.communication.Message;
2325

2426
/**
2527
* Abstract operation on schema.
2628
*/
27-
public abstract class SchemaAbstractOperation implements Serializable {
29+
public abstract class SchemaAbstractOperation implements Serializable, Message {
2830
/** */
2931
private static final long serialVersionUID = 0L;
3032

3133
/** Operation ID. */
32-
private final UUID opId;
34+
@Order(0)
35+
UUID opId;
3336

3437
/** Cache name. */
35-
private final String cacheName;
38+
@Order(1)
39+
String cacheName;
3640

3741
/** Schema name. */
38-
private final String schemaName;
42+
@Order(2)
43+
String schemaName;
44+
45+
/** */
46+
protected SchemaAbstractOperation() {}
3947

4048
/**
4149
* Constructor.
4250
*
4351
* @param opId Operation ID.
4452
* @param schemaName Schema name.
4553
*/
46-
public SchemaAbstractOperation(UUID opId, String cacheName, String schemaName) {
54+
protected SchemaAbstractOperation(UUID opId, String cacheName, String schemaName) {
4755
this.opId = opId;
4856
this.cacheName = cacheName;
4957
this.schemaName = schemaName;

0 commit comments

Comments
 (0)