diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/ColocationGroup.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/ColocationGroup.java index 21223643e8a2b..3e4f800158900 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/ColocationGroup.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/ColocationGroup.java @@ -29,19 +29,20 @@ import java.util.UUID; import java.util.stream.Collectors; import java.util.stream.LongStream; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.Order; +import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState; -import org.apache.ignite.internal.processors.query.calcite.message.CalciteMessage; +import org.apache.ignite.internal.processors.query.calcite.message.CalciteMarshalableMessage; import org.apache.ignite.internal.processors.query.calcite.message.MessageType; import org.apache.ignite.internal.processors.query.calcite.util.Commons; import org.apache.ignite.internal.util.GridIntIterator; import org.apache.ignite.internal.util.GridIntList; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.internal.U; -import org.jetbrains.annotations.Nullable; /** */ -public class ColocationGroup implements CalciteMessage { +public class ColocationGroup implements CalciteMarshalableMessage { /** */ @Order(0) long[] srcIds; @@ -60,7 +61,7 @@ public class ColocationGroup implements CalciteMessage { private boolean primaryAssignment; /** Marshalled assignments serialization call holder. */ - @Order(value = 2, method = "marshalledAssignments") + @Order(2) int[] marshalledAssignments; /** */ @@ -317,10 +318,10 @@ public int[] partitions(UUID nodeId) { return MessageType.COLOCATION_GROUP; } - /** Significantly compacts and fastens UUIDs marshalling. */ - public @Nullable int[] marshalledAssignments() { + /** {@inheritDoc} */ + @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { if (assignments == null || primaryAssignment) - return null; + return; Map nodeIdxs = new HashMap<>(); @@ -343,16 +344,13 @@ public int[] partitions(UUID nodeId) { } } - return builder.build().buffer(); + marshalledAssignments = builder.build().buffer(); } - /** Significantly compacts and fastens UUIDs unmarshalling. */ - public void marshalledAssignments(@Nullable int[] marshalledAssignments) { - if (F.isEmpty(marshalledAssignments)) { - assignments = null; - + /** {@inheritDoc} */ + @Override public void prepareUnmarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { + if (F.isEmpty(marshalledAssignments)) return; - } int bitsPerPart = Integer.SIZE - Integer.numberOfLeadingZeros(nodeIds.size()); diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentDescription.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentDescription.java index dce4f0f5d2f6a..ebba0459e4f34 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentDescription.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentDescription.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; import org.apache.ignite.internal.processors.query.calcite.message.CalciteMarshalableMessage; @@ -118,10 +119,16 @@ public void remoteSources0(Map remoteSources0) { } /** {@inheritDoc} */ - @Override public void prepareMarshal(GridCacheSharedContext ctx) { - if (target != null) + @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { + if (target != null) { target = target.explicitMapping(); + target.prepareMarshal(ctx); + } + + if (mapping != null) + mapping.prepareMarshal(ctx); + if (remoteSources0 == null && remoteSources != null) { remoteSources0 = U.newHashMap(remoteSources.size()); @@ -131,7 +138,11 @@ public void remoteSources0(Map remoteSources0) { } /** {@inheritDoc} */ - @Override public void prepareUnmarshal(GridCacheSharedContext ctx) { + @Override public void prepareUnmarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { + target.prepareUnmarshal(ctx); + + mapping.prepareUnmarshal(ctx); + if (remoteSources == null && remoteSources0 != null) { remoteSources = U.newHashMap(remoteSources0.size()); diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentMapping.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentMapping.java index 14efc043a3186..910b990476b8b 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentMapping.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentMapping.java @@ -23,8 +23,10 @@ import java.util.UUID; import java.util.function.Supplier; import java.util.stream.Collectors; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.Order; -import org.apache.ignite.internal.processors.query.calcite.message.CalciteMessage; +import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; +import org.apache.ignite.internal.processors.query.calcite.message.CalciteMarshalableMessage; import org.apache.ignite.internal.processors.query.calcite.message.MessageType; import org.apache.ignite.internal.processors.query.calcite.util.Commons; import org.apache.ignite.internal.util.typedef.F; @@ -34,7 +36,7 @@ /** * */ -public class FragmentMapping implements CalciteMessage { +public class FragmentMapping implements CalciteMarshalableMessage { /** */ @Order(0) List colocationGrps; @@ -177,4 +179,16 @@ public FragmentMapping explicitMapping(Set srcIds) { @Override public MessageType type() { return MessageType.FRAGMENT_MAPPING; } + + /** {@inheritDoc} */ + @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { + for (ColocationGroup grp : colocationGrps) + grp.prepareMarshal(ctx); + } + + /** {@inheritDoc} */ + @Override public void prepareUnmarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { + for (ColocationGroup grp : colocationGrps) + grp.prepareUnmarshal(ctx); + } } diff --git a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageProcessor.java b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageProcessor.java index f6cf23d4b7190..46dbd39dac8f4 100644 --- a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageProcessor.java +++ b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageProcessor.java @@ -54,8 +54,6 @@ *
    *
  • The target class must implement the {@code Message} interface.
  • *
  • Each field to be serialized must be annotated with {@code @Order}.
  • - *
  • If {@link Order#method()} attribute was set, then each serializing field - * must have a getter named {@code method()} and a setter named {@code method(value)}.
  • *
* *

diff --git a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java index 723adfd985253..fef259eec6a08 100644 --- a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java +++ b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java @@ -31,7 +31,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import java.util.TreeSet; import java.util.UUID; @@ -53,7 +52,6 @@ import javax.tools.JavaFileObject; import javax.tools.StandardLocation; import org.apache.ignite.internal.systemview.SystemViewRowAttributeWalkerProcessor; -import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.internal.SB; import org.jetbrains.annotations.Nullable; @@ -390,9 +388,7 @@ private void readField(VariableElement field, int opt) throws Exception { * @param field Field to generate write code. */ private void returnFalseIfWriteFailed(VariableElement field) throws Exception { - String methodName = field.getAnnotation(Order.class).method(); - - String getExpr = F.isEmpty(methodName) ? field.getSimpleName().toString() : methodName + "()"; + String getExpr = field.getSimpleName().toString(); TypeMirror type = field.asType(); @@ -557,18 +553,12 @@ private void returnFalseIfWriteFailed(Collection code, String accessor, private void returnFalseIfWriteFailed(Collection code, VariableElement field, String accessor, @Nullable String... args) { String argsStr = String.join(", ", args); - String methodName = field.getAnnotation(Order.class).method(); - - if (Objects.equals(methodName, "")) { - if (type.equals(field.getEnclosingElement())) - code.add(identedLine("if (!%s(msg.%s))", accessor, argsStr)); - else { - // Field has to be requested from a super class object. - code.add(identedLine("if (!%s(((%s)msg).%s))", accessor, field.getEnclosingElement().getSimpleName(), argsStr)); - } - } - else + if (type.equals(field.getEnclosingElement())) code.add(identedLine("if (!%s(msg.%s))", accessor, argsStr)); + else { + // Field has to be requested from a super class object. + code.add(identedLine("if (!%s(((%s)msg).%s))", accessor, field.getEnclosingElement().getSimpleName(), argsStr)); + } indent++; @@ -586,19 +576,13 @@ private void returnFalseIfEnumWriteFailed( String writerCall, String mapperCall, String fieldGetterCall) { - String methodName = field.getAnnotation(Order.class).method(); - - if (Objects.equals(methodName, "")) { - if (type.equals(field.getEnclosingElement())) - code.add(identedLine("if (!%s(%s(msg.%s)))", writerCall, mapperCall, fieldGetterCall)); - else { - // Field has to be requested from a super class object. - code.add(identedLine("if (!%s(%s(((%s)msg).%s)))", - writerCall, mapperCall, field.getEnclosingElement().getSimpleName(), fieldGetterCall)); - } - } - else + if (type.equals(field.getEnclosingElement())) code.add(identedLine("if (!%s(%s(msg.%s)))", writerCall, mapperCall, fieldGetterCall)); + else { + // Field has to be requested from a super class object. + code.add(identedLine("if (!%s(%s(((%s)msg).%s)))", + writerCall, mapperCall, field.getEnclosingElement().getSimpleName(), fieldGetterCall)); + } indent++; @@ -895,19 +879,13 @@ private PrimitiveType unboxedType(TypeMirror type) { private void returnFalseIfReadFailed(VariableElement field, String mtd, String... args) { String argsStr = String.join(", ", args); - String methodName = field.getAnnotation(Order.class).method(); - - if (Objects.equals(methodName, "")) { - if (type.equals(field.getEnclosingElement())) - read.add(identedLine("msg.%s = %s(%s);", field.getSimpleName().toString(), mtd, argsStr)); - else { - // Field has to be requested from a super class object. - read.add(identedLine("((%s)msg).%s = %s(%s);", - field.getEnclosingElement().getSimpleName(), field.getSimpleName().toString(), mtd, argsStr)); - } + if (type.equals(field.getEnclosingElement())) + read.add(identedLine("msg.%s = %s(%s);", field.getSimpleName().toString(), mtd, argsStr)); + else { + // Field has to be requested from a super class object. + read.add(identedLine("((%s)msg).%s = %s(%s);", + field.getEnclosingElement().getSimpleName(), field.getSimpleName().toString(), mtd, argsStr)); } - else - read.add(identedLine("msg.%s(%s(%s));", methodName, mtd, argsStr)); read.add(EMPTY); @@ -933,19 +911,13 @@ private void returnFalseIfEnumReadFailed(VariableElement field, String mapperDec else readOp = line("%s(%s, reader.readByte())", mapperDecodeCallStmnt, enumValuesFieldName); - String methodName = field.getAnnotation(Order.class).method(); - - if (Objects.equals(methodName, "")) { - if (type.equals(field.getEnclosingElement())) - read.add(identedLine("msg.%s = %s;", field.getSimpleName().toString(), readOp)); - else { - // Field has to be requested from a super class object. - read.add(identedLine("((%s)msg).%s = %s;", - field.getEnclosingElement().getSimpleName(), field.getSimpleName().toString(), readOp)); - } + if (type.equals(field.getEnclosingElement())) + read.add(identedLine("msg.%s = %s;", field.getSimpleName().toString(), readOp)); + else { + // Field has to be requested from a super class object. + read.add(identedLine("((%s)msg).%s = %s;", + field.getEnclosingElement().getSimpleName(), field.getSimpleName().toString(), readOp)); } - else - read.add(identedLine("msg.%s(%s);", methodName, readOp)); read.add(EMPTY); diff --git a/modules/codegen/src/main/java/org/apache/ignite/internal/Order.java b/modules/codegen/src/main/java/org/apache/ignite/internal/Order.java index d24214baa8884..0e4562537c435 100644 --- a/modules/codegen/src/main/java/org/apache/ignite/internal/Order.java +++ b/modules/codegen/src/main/java/org/apache/ignite/internal/Order.java @@ -29,7 +29,6 @@ * Fields annotated with {@code @Order} are processed in ascending order of their index. *

By default, it is assumed that getters and setters are named as the annotated fields, * e.g. field 'val' should have getters and satters with name 'val' (according Ignite's to code-style). - * If you need to override this behavior, you can specify their name in the {@link #method} attribute. *

This annotation must be used on non-static fields, and access to those fields * should be performed strictly through corresponding getter and setter methods * following the naming convention: {@code fieldName()} for getter and {@code fieldName(Type)} for setter. @@ -39,7 +38,4 @@ public @interface Order { /** @return Order of the field. */ int value(); - - /** @return Getter and setter name. */ - String method() default ""; } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java index 9191ceddfb1c2..8fa94b71df7b5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java @@ -45,7 +45,6 @@ import org.apache.ignite.compute.ComputeTaskSession; import org.apache.ignite.internal.executor.GridExecutorService; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionFullMap; -import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap; import org.apache.ignite.internal.processors.cache.persistence.filename.SharedFileTree; import org.apache.ignite.internal.processors.closure.GridClosureProcessor; import org.apache.ignite.internal.processors.marshaller.MappedName; @@ -146,7 +145,6 @@ public MarshallerContextImpl(@Nullable Collection plugins, Ignit }); checkHasClassName(GridDhtPartitionFullMap.class.getName(), ldr, CLS_NAMES_FILE); - checkHasClassName(GridDhtPartitionMap.class.getName(), ldr, CLS_NAMES_FILE); checkHasClassName(HashMap.class.getName(), ldr, JDK_CLS_NAMES_FILE); } catch (IOException e) { diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexKeyTypeMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexKeyTypeMessage.java index c5394ad3d413d..b21289fcc04be 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexKeyTypeMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexKeyTypeMessage.java @@ -17,14 +17,16 @@ package org.apache.ignite.internal.cache.query.index; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyType; import org.apache.ignite.internal.managers.communication.GridIoMessageFactory; -import org.apache.ignite.plugin.extensions.communication.Message; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; import org.jetbrains.annotations.Nullable; /** Message wrapper for {@link IndexKeyType}. */ -public class IndexKeyTypeMessage implements Message { +public class IndexKeyTypeMessage implements MarshallableMessage { /** Type code. */ public static final short TYPE_CODE = 516; @@ -35,8 +37,8 @@ public class IndexKeyTypeMessage implements Message { private @Nullable IndexKeyType val; /** Code. */ - @Order(value = 0, method = "code") - byte code = NULL_VALUE_CODE; + @Order(0) + byte code; /** Empty constructor for {@link GridIoMessageFactory}. */ public IndexKeyTypeMessage() { @@ -51,7 +53,8 @@ public IndexKeyTypeMessage(@Nullable IndexKeyType keyType) { /** Constructor. */ public IndexKeyTypeMessage(int keyTypeCode) { - code((byte)keyTypeCode); + code = (byte)keyTypeCode; + val = decode(code); } /** @return Code. */ @@ -64,7 +67,6 @@ public byte code() { */ public void code(byte code) { this.code = code; - val = decode(code); } /** @return Index key type. */ @@ -94,4 +96,14 @@ private static byte encode(@Nullable IndexKeyType keyType) { @Override public short directType() { return TYPE_CODE; } + + /** {@inheritDoc} */ + @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { + code = encode(val); + } + + /** {@inheritDoc} */ + @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { + val = decode(code); + } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java index 52e124e95c433..978f4e0f584ad 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java @@ -42,7 +42,7 @@ import org.apache.ignite.internal.TxInfo; import org.apache.ignite.internal.TxInfoSerializer; import org.apache.ignite.internal.cache.query.index.IndexKeyTypeMessage; -import org.apache.ignite.internal.cache.query.index.IndexKeyTypeMessageSerializer; +import org.apache.ignite.internal.cache.query.index.IndexKeyTypeMessageMarshallableSerializer; import org.apache.ignite.internal.cache.query.index.IndexQueryResultMeta; import org.apache.ignite.internal.cache.query.index.IndexQueryResultMetaSerializer; import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyDefinition; @@ -72,7 +72,7 @@ import org.apache.ignite.internal.processors.cache.CacheEntryInfoCollection; import org.apache.ignite.internal.processors.cache.CacheEntryInfoCollectionSerializer; import org.apache.ignite.internal.processors.cache.CacheEntryPredicateAdapter; -import org.apache.ignite.internal.processors.cache.CacheEntryPredicateAdapterSerializer; +import org.apache.ignite.internal.processors.cache.CacheEntryPredicateAdapterMarshallableSerializer; import org.apache.ignite.internal.processors.cache.CacheEvictionEntry; import org.apache.ignite.internal.processors.cache.CacheEvictionEntrySerializer; import org.apache.ignite.internal.processors.cache.CacheInvokeDirectResult; @@ -132,7 +132,7 @@ import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtUnlockRequest; import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtUnlockRequestSerializer; import org.apache.ignite.internal.processors.cache.distributed.dht.PartitionUpdateCountersMessage; -import org.apache.ignite.internal.processors.cache.distributed.dht.PartitionUpdateCountersMessageSerializer; +import org.apache.ignite.internal.processors.cache.distributed.dht.PartitionUpdateCountersMessageMarshallableSerializer; import org.apache.ignite.internal.processors.cache.distributed.dht.TransactionAttributesAwareRequest; import org.apache.ignite.internal.processors.cache.distributed.dht.TransactionAttributesAwareRequestSerializer; import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.AtomicApplicationAttributesAwareRequest; @@ -186,7 +186,7 @@ import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionSupplyMessage; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionSupplyMessageSerializer; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsFullMessage; -import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsFullMessageSerializer; +import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsFullMessageMarshallableSerializer; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsSingleMessage; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsSingleMessageSerializer; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsSingleRequest; @@ -268,7 +268,7 @@ import org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryBatchAck; import org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryBatchAckSerializer; import org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryEntry; -import org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryEntrySerializer; +import org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryEntryMarshallableSerializer; import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry; import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntrySerializer; import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey; @@ -377,18 +377,18 @@ */ public class GridIoMessageFactory implements MessageFactoryProvider { /** Custom data marshaller. */ - private final Marshaller cstDataMarshall; + private final Marshaller marsh; /** Class loader for the custom data marshalling. */ - private final ClassLoader cstDataMarshallClsLdr; + private final ClassLoader clsLdr; /** - * @param cstDataMarshall Custom data marshaller. - * @param cstDataMarshallClsLdr Class loader for the custom data marshalling. + * @param marsh Custom data marshaller. + * @param clsLdr Class loader for the custom data marshalling. */ - public GridIoMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarshallClsLdr) { - this.cstDataMarshall = cstDataMarshall; - this.cstDataMarshallClsLdr = cstDataMarshallClsLdr; + public GridIoMessageFactory(Marshaller marsh, ClassLoader clsLdr) { + this.marsh = marsh; + this.clsLdr = clsLdr; } /** {@inheritDoc} */ @@ -396,7 +396,7 @@ public GridIoMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarsh // -54 is reserved for SQL. // We don't use the code‑generated serializer for CompressedMessage - serialization is highly customized. factory.register(CompressedMessage.TYPE_CODE, CompressedMessage::new); - factory.register((short)-66, ErrorMessage::new, new ErrorMessageMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + factory.register((short)-66, ErrorMessage::new, new ErrorMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)-65, TxInfo::new, new TxInfoSerializer()); factory.register((short)-64, TxEntriesInfo::new, new TxEntriesInfoSerializer()); factory.register((short)-63, ExchangeInfo::new, new ExchangeInfoSerializer()); @@ -429,13 +429,13 @@ public GridIoMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarsh factory.register((short)6, GridTaskSessionRequest::new, new GridTaskSessionRequestSerializer()); factory.register((short)7, GridCheckpointRequest::new, new GridCheckpointRequestSerializer()); factory.register((short)8, GridIoMessage::new, - new GridIoMessageMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new GridIoMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)9, GridIoUserMessage::new, new GridIoUserMessageSerializer()); factory.register((short)10, GridDeploymentInfoBean::new, new GridDeploymentInfoBeanSerializer()); factory.register((short)11, GridDeploymentRequest::new, new GridDeploymentRequestSerializer()); factory.register((short)12, GridDeploymentResponse::new, new GridDeploymentResponseSerializer()); factory.register((short)13, GridEventStorageMessage::new, - new GridEventStorageMessageMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new GridEventStorageMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)16, GridCacheTxRecoveryRequest::new, new GridCacheTxRecoveryRequestSerializer()); factory.register((short)17, GridCacheTxRecoveryResponse::new, new GridCacheTxRecoveryResponseSerializer()); factory.register((short)18, IndexQueryResultMeta::new, new IndexQueryResultMetaSerializer()); @@ -465,7 +465,8 @@ public GridIoMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarsh factory.register((short)42, GridDhtForceKeysRequest::new, new GridDhtForceKeysRequestSerializer()); factory.register((short)43, GridDhtForceKeysResponse::new, new GridDhtForceKeysResponseSerializer()); factory.register((short)45, GridDhtPartitionDemandMessage::new, new GridDhtPartitionDemandMessageSerializer()); - factory.register((short)46, GridDhtPartitionsFullMessage::new, new GridDhtPartitionsFullMessageSerializer()); + factory.register((short)46, GridDhtPartitionsFullMessage::new, + new GridDhtPartitionsFullMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)47, GridDhtPartitionsSingleMessage::new, new GridDhtPartitionsSingleMessageSerializer()); factory.register((short)48, GridDhtPartitionsSingleRequest::new, new GridDhtPartitionsSingleRequestSerializer()); factory.register((short)49, GridNearGetRequest::new, new GridNearGetRequestSerializer()); @@ -498,9 +499,9 @@ public GridIoMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarsh factory.register((short)93, CacheInvokeDirectResult::new, new CacheInvokeDirectResultSerializer()); factory.register((short)94, IgniteTxKey::new, new IgniteTxKeySerializer()); factory.register((short)95, DataStreamerEntry::new, new DataStreamerEntrySerializer()); - factory.register((short)96, CacheContinuousQueryEntry::new, new CacheContinuousQueryEntrySerializer()); + factory.register((short)96, CacheContinuousQueryEntry::new, new CacheContinuousQueryEntryMarshallableSerializer(marsh, clsLdr)); factory.register((short)97, CacheEvictionEntry::new, new CacheEvictionEntrySerializer()); - factory.register((short)98, CacheEntryPredicateAdapter::new, new CacheEntryPredicateAdapterSerializer()); + factory.register((short)98, CacheEntryPredicateAdapter::new, new CacheEntryPredicateAdapterMarshallableSerializer(marsh, clsLdr)); factory.register((short)100, IgniteTxEntry::new, new IgniteTxEntrySerializer()); factory.register((short)101, TxEntryValueHolder::new, new TxEntryValueHolderSerializer()); factory.register((short)102, CacheVersionedValue::new, new CacheVersionedValueSerializer()); @@ -534,7 +535,8 @@ public GridIoMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarsh factory.register(CacheMetricsMessage.TYPE_CODE, CacheMetricsMessage::new, new CacheMetricsMessageSerializer()); factory.register(NodeMetricsMessage.TYPE_CODE, NodeMetricsMessage::new, new NodeMetricsMessageSerializer()); factory.register(NodeFullMetricsMessage.TYPE_CODE, NodeFullMetricsMessage::new, new NodeFullMetricsMessageSerializer()); - factory.register((short)157, PartitionUpdateCountersMessage::new, new PartitionUpdateCountersMessageSerializer()); + factory.register((short)157, PartitionUpdateCountersMessage::new, + new PartitionUpdateCountersMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)162, GenerateEncryptionKeyRequest::new, new GenerateEncryptionKeyRequestSerializer()); factory.register((short)163, GenerateEncryptionKeyResponse::new, new GenerateEncryptionKeyResponseSerializer()); factory.register((short)167, ServiceDeploymentProcessId::new, new ServiceDeploymentProcessIdSerializer()); @@ -543,7 +545,7 @@ public GridIoMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarsh factory.register(GridQueryKillRequest.TYPE_CODE, GridQueryKillRequest::new, new GridQueryKillRequestSerializer()); factory.register(GridQueryKillResponse.TYPE_CODE, GridQueryKillResponse::new, new GridQueryKillResponseSerializer()); factory.register(GridIoSecurityAwareMessage.TYPE_CODE, GridIoSecurityAwareMessage::new, - new GridIoSecurityAwareMessageMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new GridIoSecurityAwareMessageMarshallableSerializer(marsh, clsLdr)); factory.register(SessionChannelMessage.TYPE_CODE, SessionChannelMessage::new, new SessionChannelMessageSerializer()); factory.register(SingleNodeMessage.TYPE_CODE, SingleNodeMessage::new, new SingleNodeMessageSerializer()); factory.register((short)177, TcpInverseConnectionResponseMessage::new, new TcpInverseConnectionResponseMessageSerializer()); @@ -585,7 +587,8 @@ public GridIoMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarsh factory.register(IgniteDhtPartitionsToReloadMap.TYPE_CODE, IgniteDhtPartitionsToReloadMap::new, new IgniteDhtPartitionsToReloadMapSerializer()); factory.register(IntLongMap.TYPE_CODE, IntLongMap::new, new IntLongMapSerializer()); - factory.register(IndexKeyTypeMessage.TYPE_CODE, IndexKeyTypeMessage::new, new IndexKeyTypeMessageSerializer()); + factory.register(IndexKeyTypeMessage.TYPE_CODE, IndexKeyTypeMessage::new, + new IndexKeyTypeMessageMarshallableSerializer(marsh, clsLdr)); factory.register(GridPartitionStateMap.TYPE_CODE, GridPartitionStateMap::new, new GridPartitionStateMapSerializer()); factory.register(GridDhtPartitionMap.TYPE_CODE, GridDhtPartitionMap::new, new GridDhtPartitionMapSerializer()); factory.register(GridDhtPartitionFullMap.TYPE_CODE, GridDhtPartitionFullMap::new, new GridDhtPartitionFullMapSerializer()); @@ -594,17 +597,16 @@ public GridIoMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarsh factory.register((short)522, DataStreamerUpdatesHandlerResult::new, new DataStreamerUpdatesHandlerResultSerializer()); factory.register((short)523, SnapshotCheckResponse::new, new SnapshotCheckResponseSerializer()); factory.register((short)524, IncrementalSnapshotVerifyResult::new, - new IncrementalSnapshotVerifyResultMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new IncrementalSnapshotVerifyResultMarshallableSerializer(marsh, clsLdr)); factory.register((short)525, SnapshotRestoreOperationResponse::new, - new SnapshotRestoreOperationResponseMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); - factory.register((short)526, SnapshotMetadataResponse::new, - new SnapshotMetadataResponseMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new SnapshotRestoreOperationResponseMarshallableSerializer(marsh, clsLdr)); + factory.register((short)526, SnapshotMetadataResponse::new, new SnapshotMetadataResponseMarshallableSerializer(marsh, clsLdr)); factory.register((short)527, SnapshotCheckPartitionHashesResponse::new, - new SnapshotCheckPartitionHashesResponseMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new SnapshotCheckPartitionHashesResponseMarshallableSerializer(marsh, clsLdr)); factory.register((short)528, SnapshotCheckHandlersResponse::new, new SnapshotCheckHandlersResponseSerializer()); factory.register((short)529, SnapshotCheckHandlersNodeResponse::new, new SnapshotCheckHandlersNodeResponseSerializer()); factory.register((short)530, SnapshotPartitionsVerifyHandlerResponse::new, - new SnapshotPartitionsVerifyHandlerResponseMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new SnapshotPartitionsVerifyHandlerResponseMarshallableSerializer(marsh, clsLdr)); // [-3..119] [124..129] [-23..-28] [-36..-55] [183..188] - this // [120..123] - DR 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 f4038f87f86d8..69800247c4b5a 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 @@ -143,7 +143,7 @@ import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryConnectionCheckMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryConnectionCheckMessageSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryCustomEventMessage; -import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryCustomEventMessageSerializer; +import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryCustomEventMessageMarshallableSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryDiscardMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryDiscardMessageSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryDuplicateIdMessage; @@ -163,11 +163,11 @@ import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddedMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddedMessageMarshallableSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeFailedMessage; -import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeFailedMessageSerializer; +import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeFailedMessageMarshallableSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeFullMetricsMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeFullMetricsMessageSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeLeftMessage; -import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeLeftMessageSerializer; +import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeLeftMessageMarshallableSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeMetricsMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeMetricsMessageSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryPingRequest; @@ -177,43 +177,42 @@ import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryRingLatencyCheckMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryRingLatencyCheckMessageSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryServerOnlyCustomEventMessage; -import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryServerOnlyCustomEventMessageSerializer; +import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryServerOnlyCustomEventMessageMarshallableSerializer; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryStatusCheckMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryStatusCheckMessageSerializer; /** Message factory for discovery messages. */ public class DiscoveryMessageFactory implements MessageFactoryProvider { /** Custom data marshaller. */ - private final Marshaller cstDataMarshall; + private final Marshaller marsh; /** Class loader for the custom data marshalling. */ - private final ClassLoader cstDataMarshallClsLdr; + private final ClassLoader clsLdr; /** - * @param cstDataMarshall Custom data marshaller. - * @param cstDataMarshallClsLdr Class loader for the custom data marshalling. + * @param marsh Custom data marshaller. + * @param clsLdr Class loader for the custom data marshalling. */ - public DiscoveryMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMarshallClsLdr) { - this.cstDataMarshall = cstDataMarshall; - this.cstDataMarshallClsLdr = cstDataMarshallClsLdr; + public DiscoveryMessageFactory(Marshaller marsh, ClassLoader clsLdr) { + this.marsh = marsh; + this.clsLdr = clsLdr; } /** {@inheritDoc} */ @Override public void registerAll(MessageFactory factory) { factory.register((short)-200, TcpDiscoveryCollectionMessage::new, - new TcpDiscoveryCollectionMessageMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new TcpDiscoveryCollectionMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)-115, SchemaAlterTableAddColumnOperation::new, new SchemaAlterTableAddColumnOperationSerializer()); factory.register((short)-114, SchemaIndexCreateOperation::new, - new SchemaIndexCreateOperationMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new SchemaIndexCreateOperationMarshallableSerializer(marsh, clsLdr)); factory.register((short)-113, SchemaIndexDropOperation::new, new SchemaIndexDropOperationSerializer()); factory.register((short)-112, SchemaAlterTableDropColumnOperation::new, new SchemaAlterTableDropColumnOperationSerializer()); factory.register((short)-111, SchemaAddQueryEntityOperation::new, - new SchemaAddQueryEntityOperationMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); - factory.register((short)-110, QueryField::new, new QueryFieldMarshallableSerializer(cstDataMarshall, - cstDataMarshallClsLdr)); + new SchemaAddQueryEntityOperationMarshallableSerializer(marsh, clsLdr)); + factory.register((short)-110, QueryField::new, new QueryFieldMarshallableSerializer(marsh, clsLdr)); factory.register((short)-109, User::new, new UserSerializer()); factory.register((short)-108, UserManagementOperation::new, new UserManagementOperationSerializer()); factory.register((short)-107, NodeSpecificData::new, new NodeSpecificDataSerializer()); @@ -225,7 +224,7 @@ public DiscoveryMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMa factory.register((short)-102, TcpDiscoveryNodeMetricsMessage::new, new TcpDiscoveryNodeMetricsMessageSerializer()); factory.register((short)-101, InetSocketAddressMessage::new, new InetSocketAddressMessageSerializer()); factory.register((short)-100, InetAddressMessage::new, new InetAddressMessageSerializer()); - factory.register((short)-66, ErrorMessage::new, new ErrorMessageMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + factory.register((short)-66, ErrorMessage::new, new ErrorMessageMarshallableSerializer(marsh, clsLdr)); // TcpDiscoveryAbstractMessage factory.register((short)0, TcpDiscoveryCheckFailedMessage::new, new TcpDiscoveryCheckFailedMessageSerializer()); @@ -244,16 +243,18 @@ public DiscoveryMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMa factory.register((short)13, TcpDiscoveryClientMetricsUpdateMessage::new, new TcpDiscoveryClientMetricsUpdateMessageSerializer()); factory.register((short)14, TcpDiscoveryMetricsUpdateMessage::new, new TcpDiscoveryMetricsUpdateMessageSerializer()); factory.register((short)15, TcpDiscoveryClientAckResponse::new, new TcpDiscoveryClientAckResponseSerializer()); - factory.register((short)16, TcpDiscoveryNodeLeftMessage::new, new TcpDiscoveryNodeLeftMessageSerializer()); - factory.register((short)17, TcpDiscoveryNodeFailedMessage::new, new TcpDiscoveryNodeFailedMessageSerializer()); + factory.register((short)16, TcpDiscoveryNodeLeftMessage::new, new TcpDiscoveryNodeLeftMessageMarshallableSerializer(marsh, clsLdr)); + factory.register((short)17, TcpDiscoveryNodeFailedMessage::new, + new TcpDiscoveryNodeFailedMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)18, TcpDiscoveryStatusCheckMessage::new, new TcpDiscoveryStatusCheckMessageSerializer()); factory.register((short)19, TcpDiscoveryNodeAddFinishedMessage::new, - new TcpDiscoveryNodeAddFinishedMessageMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new TcpDiscoveryNodeAddFinishedMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)20, TcpDiscoveryJoinRequestMessage::new, - new TcpDiscoveryJoinRequestMessageMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); - factory.register((short)21, TcpDiscoveryCustomEventMessage::new, new TcpDiscoveryCustomEventMessageSerializer()); + new TcpDiscoveryJoinRequestMessageMarshallableSerializer(marsh, clsLdr)); + factory.register((short)21, TcpDiscoveryCustomEventMessage::new, + new TcpDiscoveryCustomEventMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)22, TcpDiscoveryServerOnlyCustomEventMessage::new, - new TcpDiscoveryServerOnlyCustomEventMessageSerializer()); + new TcpDiscoveryServerOnlyCustomEventMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)23, TcpConnectionRequestDiscoveryMessage::new, new TcpConnectionRequestDiscoveryMessageSerializer()); factory.register((short)24, DistributedMetaStorageUpdateMessage::new, new DistributedMetaStorageUpdateMessageSerializer()); factory.register((short)25, DistributedMetaStorageUpdateAckMessage::new, new DistributedMetaStorageUpdateAckMessageSerializer()); @@ -261,14 +262,15 @@ public DiscoveryMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMa factory.register((short)27, DistributedMetaStorageCasAckMessage::new, new DistributedMetaStorageCasAckMessageSerializer()); factory.register((short)28, TcpDiscoveryClientReconnectMessage::new, new TcpDiscoveryClientReconnectMessageSerializer()); factory.register((short)29, TcpDiscoveryNodeAddedMessage::new, - new TcpDiscoveryNodeAddedMessageMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new TcpDiscoveryNodeAddedMessageMarshallableSerializer(marsh, clsLdr)); factory.register((short)30, FullMessage::new, new FullMessageSerializer()); factory.register((short)86, GridCacheVersion::new, new GridCacheVersionSerializer()); // DiscoveryCustomMessage factory.register((short)500, CacheStatisticsModeChangeMessage::new, new CacheStatisticsModeChangeMessageSerializer()); - factory.register((short)501, SecurityAwareCustomMessageWrapper::new, new SecurityAwareCustomMessageWrapperSerializer()); + factory.register((short)501, SecurityAwareCustomMessageWrapper::new, + new SecurityAwareCustomMessageWrapperMarshallableSerializer(marsh, clsLdr)); factory.register((short)502, MetadataRemoveAcceptedMessage::new, new MetadataRemoveAcceptedMessageSerializer()); factory.register((short)503, MetadataRemoveProposedMessage::new, new MetadataRemoveProposedMessageSerializer()); factory.register((short)504, SchemaProposeDiscoveryMessage::new, new SchemaProposeDiscoveryMessageSerializer()); @@ -294,16 +296,15 @@ public DiscoveryMessageFactory(Marshaller cstDataMarshall, ClassLoader cstDataMa factory.register((short)522, DataStreamerUpdatesHandlerResult::new, new DataStreamerUpdatesHandlerResultSerializer()); factory.register((short)523, SnapshotCheckResponse::new, new SnapshotCheckResponseSerializer()); factory.register((short)524, IncrementalSnapshotVerifyResult::new, - new IncrementalSnapshotVerifyResultMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new IncrementalSnapshotVerifyResultMarshallableSerializer(marsh, clsLdr)); factory.register((short)525, SnapshotRestoreOperationResponse::new, - new SnapshotRestoreOperationResponseMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); - factory.register((short)526, SnapshotMetadataResponse::new, - new SnapshotMetadataResponseMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new SnapshotRestoreOperationResponseMarshallableSerializer(marsh, clsLdr)); + factory.register((short)526, SnapshotMetadataResponse::new, new SnapshotMetadataResponseMarshallableSerializer(marsh, clsLdr)); factory.register((short)527, SnapshotCheckPartitionHashesResponse::new, - new SnapshotCheckPartitionHashesResponseMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new SnapshotCheckPartitionHashesResponseMarshallableSerializer(marsh, clsLdr)); factory.register((short)528, SnapshotCheckHandlersResponse::new, new SnapshotCheckHandlersResponseSerializer()); factory.register((short)529, SnapshotCheckHandlersNodeResponse::new, new SnapshotCheckHandlersNodeResponseSerializer()); factory.register((short)530, SnapshotPartitionsVerifyHandlerResponse::new, - new SnapshotPartitionsVerifyHandlerResponseMarshallableSerializer(cstDataMarshall, cstDataMarshallClsLdr)); + new SnapshotPartitionsVerifyHandlerResponseMarshallableSerializer(marsh, clsLdr)); } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/SecurityAwareCustomMessageWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/SecurityAwareCustomMessageWrapper.java index c186fe02a1a70..97d798b66b699 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/SecurityAwareCustomMessageWrapper.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/SecurityAwareCustomMessageWrapper.java @@ -19,19 +19,17 @@ import java.util.UUID; import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.IgniteException; import org.apache.ignite.internal.Order; -import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; import org.apache.ignite.plugin.extensions.communication.Message; import org.apache.ignite.plugin.extensions.communication.MessageFactory; import org.apache.ignite.spi.discovery.DiscoverySpiCustomMessage; import org.jetbrains.annotations.Nullable; -import static org.apache.ignite.marshaller.Marshallers.jdk; - /** Custom message wrapper with ID of security subject that initiated the current message. */ -public class SecurityAwareCustomMessageWrapper extends DiscoverySpiCustomMessage implements Message { +public class SecurityAwareCustomMessageWrapper extends DiscoverySpiCustomMessage implements MarshallableMessage { /** */ private static final long serialVersionUID = 0L; @@ -43,13 +41,13 @@ public class SecurityAwareCustomMessageWrapper extends DiscoverySpiCustomMessage private DiscoveryCustomMessage delegate; /** */ - @Order(1) // TODO: Should be removed in https://issues.apache.org/jira/browse/IGNITE-27627 + @Order(1) Message msg; /** Serialized message bytes. */ // TODO: Should be removed in https://issues.apache.org/jira/browse/IGNITE-27627 - @Order(value = 2, method = "messageBytes") + @Order(2) byte[] msgBytes; /** Default constructor for {@link MessageFactory}. */ @@ -95,37 +93,20 @@ public DiscoveryCustomMessage delegate() { return ack == null ? null : new SecurityAwareCustomMessageWrapper(ack, secSubjId); } - /** */ - public byte[] messageBytes() { - if (delegate instanceof Message) - return null; - - if (msgBytes != null) - return msgBytes; - - try { - return msgBytes = U.marshal(jdk(), delegate); - } - catch (IgniteCheckedException e) { - throw new IgniteException(e); - } + /** {@inheritDoc} */ + @Override public short directType() { + return 501; } - /** */ - public void messageBytes(byte[] msgBytes) { - if (F.isEmpty(msgBytes)) - return; - - try { - delegate = U.unmarshal(jdk(), msgBytes, U.gridClassLoader()); - } - catch (IgniteCheckedException e) { - throw new RuntimeException(e); - } + /** {@inheritDoc} */ + @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { + if (!(delegate instanceof Message)) + msgBytes = U.marshal(marsh, delegate); } /** {@inheritDoc} */ - @Override public short directType() { - return 501; + @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { + if (msgBytes != null) + delegate = U.unmarshal(marsh, msgBytes, clsLdr); } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageMessage.java index 263451596e8d1..6b6d4f26b38d8 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageMessage.java @@ -82,7 +82,7 @@ public class GridEventStorageMessage implements MarshallableMessage { /** Node class loader participants. */ @GridToStringInclude - @Order(value = 8, method = "loaderParticipants") + @Order(8) Map ldrParties; /** */ @@ -191,13 +191,6 @@ public String userVersion() { return ldrParties != null ? Collections.unmodifiableMap(ldrParties) : null; } - /** - * @param ldrParties Node class loader participant map. - */ - public void loaderParticipants(@Nullable Map ldrParties) { - this.ldrParties = ldrParties; - } - /** * @return Exception. */ diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryPredicateAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryPredicateAdapter.java index 0eaa1fa7a779c..180d09aa93b8c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryPredicateAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryPredicateAdapter.java @@ -23,10 +23,12 @@ import org.apache.ignite.internal.Order; import org.apache.ignite.internal.util.tostring.GridToStringInclude; import org.apache.ignite.internal.util.typedef.internal.CU; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; import org.jetbrains.annotations.Nullable; /** A unified container for common, typical cache entry predicates. */ -public class CacheEntryPredicateAdapter implements CacheEntryPredicate { +public class CacheEntryPredicateAdapter implements CacheEntryPredicate, MarshallableMessage { /** */ private static final long serialVersionUID = 4647110502545358709L; @@ -41,7 +43,7 @@ public class CacheEntryPredicateAdapter implements CacheEntryPredicate { private PredicateType type; /** Type value serialization holder. */ - @Order(value = 0, method = "code") + @Order(0) protected transient byte code; /** */ @@ -64,6 +66,7 @@ public CacheEntryPredicateAdapter(PredicateType type) { /** */ public CacheEntryPredicateAdapter(@Nullable CacheObject val) { type = PredicateType.VALUE; + code = 1; this.val = val; } @@ -144,27 +147,65 @@ public PredicateType type() { /** */ public byte code() { - assert type != null; + return code; + } + /** */ + public void code(byte code) { + this.code = code; + } + + /** {@inheritDoc} */ + @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { switch (type) { - case OTHER: return 0; - case VALUE: return 1; - case HAS_VALUE: return 2; - case HAS_NO_VALUE: return 3; - case ALWAYS_FALSE: return 4; - } + case OTHER: + code = 0; + break; + + case VALUE: + code = 1; + break; + + case HAS_VALUE: + code = 2; + break; + + case HAS_NO_VALUE: + code = 3; + break; - throw new IllegalArgumentException("Unknown cache entry predicate type: " + type); + case ALWAYS_FALSE: + code = 4; + break; + + default: + throw new IllegalArgumentException("Unknown cache entry predicate type: " + type); + } } - /** */ - public void code(byte code) { + /** {@inheritDoc} */ + @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { switch (code) { - case 0: type = PredicateType.OTHER; break; - case 1: type = PredicateType.VALUE; break; - case 2: type = PredicateType.HAS_VALUE; break; - case 3: type = PredicateType.HAS_NO_VALUE; break; - case 4: type = PredicateType.ALWAYS_FALSE; break; + case 0: + type = PredicateType.OTHER; + break; + + case 1: + type = PredicateType.VALUE; + break; + + case 2: + type = PredicateType.HAS_VALUE; + break; + + case 3: + type = PredicateType.HAS_NO_VALUE; + break; + + case 4: + type = PredicateType.ALWAYS_FALSE; + break; + default: throw new IllegalArgumentException("Unknown cache entry predicate type code: " + code); } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java index 9b7e2e4943b7b..285e4d392d94c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java @@ -69,7 +69,7 @@ public abstract class GridCacheMessage implements Message { /** */ @GridToStringInclude - @Order(value = 2, method = "lastAffinityChangedTopologyVersion") + @Order(2) @Nullable public AffinityTopologyVersion lastAffChangedTopVer; /** */ diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/PartitionUpdateCountersMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/PartitionUpdateCountersMessage.java index b6e7743b880e8..f5b35d1364e28 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/PartitionUpdateCountersMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/PartitionUpdateCountersMessage.java @@ -19,20 +19,22 @@ import java.util.Arrays; import java.util.Map; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.util.GridUnsafe; import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.plugin.extensions.communication.Message; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; /** * Partition update counters message. */ -public class PartitionUpdateCountersMessage implements Message { +public class PartitionUpdateCountersMessage implements MarshallableMessage { /** */ private static final int ITEM_SIZE = 4 /* partition */ + 8 /* initial counter */ + 8 /* updates count */; /** Byte representation of partition counters. */ - @Order(value = 0, method = "data") + @Order(0) byte[] data; /** */ @@ -61,21 +63,6 @@ public PartitionUpdateCountersMessage(int cacheId, int initSize) { data = new byte[initSize * ITEM_SIZE]; } - /** - * @return Data. - */ - public byte[] data() { - return Arrays.copyOf(data, size * ITEM_SIZE); - } - - /** - * @param data New data. - */ - public void data(byte[] data) { - this.data = data; - size = data == null ? 0 : data.length / ITEM_SIZE; - } - /** * @return Cache id. */ @@ -199,4 +186,14 @@ private void ensureSpace(int newSize) { ", cntrs=" + sb + '}'; } + + /** {@inheritDoc} */ + @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { + data = Arrays.copyOf(data, size * ITEM_SIZE); + } + + /** {@inheritDoc} */ + @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { + size = data == null ? 0 : data.length / ITEM_SIZE; + } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionMap.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionMap.java index b343d55d11b02..7bda312f9b650 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionMap.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionMap.java @@ -18,20 +18,15 @@ package org.apache.ignite.internal.processors.cache.distributed.dht.preloader; import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; -import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState; import org.apache.ignite.internal.util.GridPartitionStateMap; import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.plugin.extensions.communication.Message; import static org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState.MOVING; @@ -39,13 +34,10 @@ /** * Partition map from single node. */ -public class GridDhtPartitionMap implements Comparable, Externalizable, Message { +public class GridDhtPartitionMap implements Comparable, Message { /** Type code. */ public static final short TYPE_CODE = 518; - /** */ - private static final long serialVersionUID = 0L; - /** Node ID. */ @Order(0) protected UUID nodeId; @@ -59,11 +51,12 @@ public class GridDhtPartitionMap implements Comparable, Ext protected AffinityTopologyVersion top; /** */ - @Order(value = 3, method = "map") + @Order(3) protected GridPartitionStateMap map; /** */ - private volatile int moving; + @Order(4) + volatile int moving; /** */ private static final AtomicIntegerFieldUpdater MOVING_FIELD_UPDATER = @@ -206,17 +199,6 @@ public GridPartitionStateMap map() { return map; } - /** - * @param map Partitions state map. - */ - public void map(GridPartitionStateMap map) { - this.map = new GridPartitionStateMap(); - - if (map != null) - for (Map.Entry entry : map.entrySet()) - put(entry.getKey(), entry.getValue()); - } - /** * @return Node ID. */ @@ -271,66 +253,6 @@ public AffinityTopologyVersion topologyVersion() { return Long.compare(updateSeq, o.updateSeq); } - /** {@inheritDoc} */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - U.writeUuid(out, nodeId); - - out.writeLong(updateSeq); - - int size = map.size(); - - out.writeInt(size); - - int i = 0; - - for (Map.Entry entry : map.entrySet()) { - int ordinal = entry.getValue().ordinal(); - - assert ordinal == (ordinal & 0x7); - assert entry.getKey() < CacheConfiguration.MAX_PARTITIONS_COUNT : entry.getKey(); - - out.writeByte(ordinal); - out.writeShort(entry.getKey()); - - i++; - } - - assert i == size : "Invalid size [size1=" + size + ", size2=" + i + ']'; - - if (top != null) { - out.writeLong(topologyVersion().topologyVersion()); - out.writeInt(topologyVersion().minorTopologyVersion()); - } - else { - out.writeLong(0); - out.writeInt(0); - } - } - - /** {@inheritDoc} */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - nodeId = U.readUuid(in); - - updateSeq = in.readLong(); - - int size = in.readInt(); - - map = new GridPartitionStateMap(); - - for (int i = 0; i < size; i++) { - int ordinal = in.readUnsignedByte(); - int part = in.readUnsignedShort(); - - put(part, GridDhtPartitionState.fromOrdinal(ordinal)); - } - - long ver = in.readLong(); - int minorVer = in.readInt(); - - if (ver != 0) - top = new AffinityTopologyVersion(ver, minorVer); - } - /** {@inheritDoc} */ @Override public boolean equals(Object o) { if (this == o) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsFullMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsFullMessage.java index 37079381e9f43..98403fbf1ba2d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsFullMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsFullMessage.java @@ -40,6 +40,8 @@ import org.apache.ignite.internal.util.tostring.GridToStringInclude; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -48,7 +50,7 @@ * GridDhtPartitionsSingleMessage}s were received.
May be also compacted as part of {@link * CacheAffinityChangeMessage} for node left or failed case.
*/ -public class GridDhtPartitionsFullMessage extends GridDhtPartitionsAbstractMessage { +public class GridDhtPartitionsFullMessage extends GridDhtPartitionsAbstractMessage implements MarshallableMessage { /** */ private static final byte REBALANCED_FLAG_MASK = 0x01; @@ -99,10 +101,10 @@ public class GridDhtPartitionsFullMessage extends GridDhtPartitionsAbstractMessa * Used as a stub for serialization of {@link #errs}. * All logic resides within getter and setter. */ - @Order(value = 7, method = "errorMessages") + @Order(7) @Compress @SuppressWarnings("unused") - private Map errMsgs; + Map errMsgs; /** */ @Order(8) @@ -367,20 +369,6 @@ void setErrorsMap(Map errs) { this.errs = new HashMap<>(errs); } - /** - * @return Error messages map. - */ - public Map errorMessages() { - return errs == null ? null : F.viewReadOnly(errs, ErrorMessage::new); - } - - /** - * @param errMsgs Error messages map. - */ - public void errorMessages(Map errMsgs) { - errs = errMsgs == null ? null : F.viewReadOnly(errMsgs, e -> e.error()); - } - /** * Rebalance finished. */ @@ -531,4 +519,14 @@ private Map copyPartitionsMap(Map e.error()); + } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/IgniteDhtDemandedPartitionsMap.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/IgniteDhtDemandedPartitionsMap.java index e521edafcf1a6..3c718f58c3cb0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/IgniteDhtDemandedPartitionsMap.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/IgniteDhtDemandedPartitionsMap.java @@ -41,11 +41,11 @@ public class IgniteDhtDemandedPartitionsMap implements Serializable, Message { private static final long serialVersionUID = 0L; /** Map of partitions that will be preloaded from history. (partId -> (fromCntr, toCntr)). */ - @Order(value = 0, method = "historicalMap") + @Order(0) CachePartitionPartialCountersMap historical; /** Set of partitions that require full rebalancing. */ - @Order(value = 1, method = "fullSet") + @Order(1) @GridToStringInclude Set full; @@ -151,11 +151,6 @@ public CachePartitionPartialCountersMap historicalMap() { return historical; } - /** */ - public void historicalMap(CachePartitionPartialCountersMap historical) { - this.historical = historical; - } - /** */ public Set fullSet() { if (full == null) @@ -164,11 +159,6 @@ public Set fullSet() { return Collections.unmodifiableSet(full); } - /** */ - public void fullSet(Set full) { - this.full = full; - } - /** */ public Set historicalSet() { if (historical == null) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetResponse.java index 937abedccd23a..0fec84749f5da 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetResponse.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetResponse.java @@ -55,7 +55,7 @@ public class GridNearGetResponse extends GridCacheIdMessage implements GridCache /** Result. */ @GridToStringInclude - @Order(value = 3, method = "entries") + @Order(3) Collection entries; /** Keys to retry due to ownership shift. */ diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetResponse.java index d8d3bbc59cff7..c3c73676c980f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetResponse.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearSingleGetResponse.java @@ -50,7 +50,7 @@ public class GridNearSingleGetResponse extends GridCacheIdMessage implements Gri Message res; /** Topology version. */ - @Order(value = 2, method = "topologyVersion") + @Order(2) AffinityTopologyVersion topVer; /** Error message. */ @@ -127,13 +127,6 @@ public void errorMessage(ErrorMessage errMsg) { return topVer != null ? topVer : super.topologyVersion(); } - /** - * @param topVer Topology version. - */ - public void topologyVersion(AffinityTopologyVersion topVer) { - this.topVer = topVer; - } - /** * @return {@code True} if invalid partitions error occurred. */ diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java index 9ab8a49a0ace0..7e99db3bce409 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java @@ -151,7 +151,7 @@ public class GridCacheQueryRequest extends GridCacheIdMessage implements GridCac int part = -1; /** */ - @Order(value = 19, method = "topologyVersion") + @Order(19) AffinityTopologyVersion topVer; /** Set of keys that must be skiped during iteration. */ @@ -406,13 +406,6 @@ private static byte setDataPageScanEnabled(int flags, Boolean enabled) { return topVer != null ? topVer : AffinityTopologyVersion.NONE; } - /** - * @param topVer Topology version. - */ - public void topologyVersion(AffinityTopologyVersion topVer) { - this.topVer = topVer; - } - /** {@inheritDoc} */ @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { super.prepareMarshal(ctx); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEntry.java index 3b7e40f84f5be..85e2dc147f43f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEntry.java @@ -29,13 +29,14 @@ import org.apache.ignite.internal.util.tostring.GridToStringExclude; import org.apache.ignite.internal.util.tostring.GridToStringInclude; import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.plugin.extensions.communication.Message; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; import org.jetbrains.annotations.Nullable; /** * Continuous query entry. */ -public class CacheContinuousQueryEntry implements GridCacheDeployable, Message { +public class CacheContinuousQueryEntry implements GridCacheDeployable, MarshallableMessage { /** */ private static final byte BACKUP_ENTRY = 0b0001; @@ -55,19 +56,28 @@ public class CacheContinuousQueryEntry implements GridCacheDeployable, Message { /** Key. */ @GridToStringInclude - @Order(value = 2, method = "serializedKey") KeyCacheObject key; + /** */ + @Order(2) + byte[] keyBytes; + /** New value. */ @GridToStringInclude - @Order(value = 3, method = "serializedNewValue") CacheObject newVal; + /** */ + @Order(3) + byte[] newValBytes; + /** Old value. */ @GridToStringInclude - @Order(value = 4, method = "serializedOldValue") CacheObject oldVal; + /** */ + @Order(4) + byte[] oldValBytes; + /** Cache name. */ @Order(5) int cacheId; @@ -325,16 +335,6 @@ KeyCacheObject key() { return key; } - /** */ - KeyCacheObject serializedKey() { - return isFiltered() ? null : key; - } - - /** */ - void serializedKey(KeyCacheObject key) { - this.key = key; - } - /** * @return New value. */ @@ -342,16 +342,6 @@ CacheObject newValue() { return newVal; } - /** */ - CacheObject serializedNewValue() { - return isFiltered() ? null : newVal; - } - - /** */ - void serializedNewValue(CacheObject newVal) { - this.newVal = newVal; - } - /** * @return Old value. */ @@ -359,16 +349,6 @@ CacheObject oldValue() { return oldVal; } - /** */ - CacheObject serializedOldValue() { - return isFiltered() ? null : oldVal; - } - - /** */ - void serializedOldValue(CacheObject oldVal) { - this.oldVal = oldVal; - } - /** {@inheritDoc} */ @Override public void prepare(GridDeploymentInfo depInfo) { this.depInfo = depInfo; @@ -388,4 +368,30 @@ void serializedOldValue(CacheObject oldVal) { @Override public String toString() { return S.toString(CacheContinuousQueryEntry.class, this); } + + /** {@inheritDoc} */ + @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { + if (!isFiltered()) { + if (key != null) + keyBytes = marsh.marshal(key); + + if (newVal != null) + newValBytes = marsh.marshal(newVal); + + if (oldVal != null) + oldValBytes = marsh.marshal(oldVal); + } + } + + /** {@inheritDoc} */ + @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { + if (keyBytes != null) + key = marsh.unmarshal(keyBytes, clsLdr); + + if (newValBytes != null) + newVal = marsh.unmarshal(newValBytes, clsLdr); + + if (oldValBytes != null) + oldVal = marsh.unmarshal(oldValBytes, clsLdr); + } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxEntryValueHolder.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxEntryValueHolder.java index a6e33f449670c..13601b32a910c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxEntryValueHolder.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxEntryValueHolder.java @@ -40,7 +40,7 @@ */ public class TxEntryValueHolder implements Message { /** Stored value. */ - @Order(value = 0, method = "storedValue") + @Order(0) @GridToStringInclude(sensitive = true) @Nullable CacheObject val; @@ -91,24 +91,6 @@ public CacheObject value() { return val; } - /** - * Used only in serializer. - * - * @return Stored value or null. - */ - public @Nullable CacheObject storedValue() { - return hasWriteVal ? val : null; - } - - /** - * Used only in serializer. - * - * @param val Stored value. - */ - public void storedValue(@Nullable CacheObject val) { - this.val = val; - } - /** * @return Cache operation. */ diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/SingleNodeMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/SingleNodeMessage.java index b5bfe29d1dd42..3457d980c47c7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/SingleNodeMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/SingleNodeMessage.java @@ -46,8 +46,8 @@ public class SingleNodeMessage implements Message { int type; /** Single node response. */ - @Order(value = 2, method = "response") - private Message resp; + @Order(value = 2) + Message resp; /** Error. */ @Order(3) @@ -93,11 +93,6 @@ public R response() { return (R)resp; } - /** @param resp Response. */ - public void response(R resp) { - this.resp = resp; - } - /** @return {@code True} if finished with error. */ public boolean hasError() { return errMsg != null; diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MarshallableMessage.java b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MarshallableMessage.java index f3cc81dd68e26..5f2f8c4196608 100644 --- a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MarshallableMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MarshallableMessage.java @@ -23,15 +23,11 @@ /** A {@link Message} which still requires external custom pre-marshalling and post-unmarshalling. */ public interface MarshallableMessage extends Message { /** @param marsh External custom marshaller. */ - public default void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { - throw new UnsupportedOperationException(); - } + public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException; /** * @param marsh External custom marshaller. * @param clsLdr External class loader to post-unmarshall. */ - public default void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { - throw new UnsupportedOperationException(); - } + public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException; } diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java index aea469edc80e3..4ee318ba2f3ff 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java @@ -2596,7 +2596,7 @@ private void processCustomMessage(TcpDiscoveryCustomEventMessage msg) { if (node != null && node.visible()) { try { - msg.finishUnmarhal(spi.marshaller(), U.resolveClassLoader(spi.ignite().configuration())); + msg.finishUnmarshal(spi.marshaller(), U.resolveClassLoader(spi.ignite().configuration())); DiscoveryCustomMessage msgObj = msg.message(); diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java index 8662d940e7b19..f8d28cc912f55 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java @@ -6083,7 +6083,7 @@ private void processCustomMessage(TcpDiscoveryCustomEventMessage msg, boolean wa DiscoveryCustomMessage msgObj = null; try { - msg.finishUnmarhal(spi.marshaller(), U.resolveClassLoader(spi.ignite().configuration())); + msg.finishUnmarshal(spi.marshaller(), U.resolveClassLoader(spi.ignite().configuration())); msgObj = msg.message(); } @@ -6274,7 +6274,7 @@ private void notifyDiscoveryListener(TcpDiscoveryCustomEventMessage msg, boolean DiscoveryCustomMessage msgObj; try { - msg.finishUnmarhal(spi.marshaller(), U.resolveClassLoader(spi.ignite().configuration())); + msg.finishUnmarshal(spi.marshaller(), U.resolveClassLoader(spi.ignite().configuration())); msgObj = msg.message(); } diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryAbstractTraceableMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryAbstractTraceableMessage.java index 440766b99ab67..3e633f4d47b3d 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryAbstractTraceableMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryAbstractTraceableMessage.java @@ -18,23 +18,26 @@ package org.apache.ignite.spi.discovery.tcp.messages; import java.util.UUID; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.managers.discovery.DiscoveryMessageFactory; import org.apache.ignite.internal.processors.tracing.messages.SpanContainer; import org.apache.ignite.internal.processors.tracing.messages.TraceableMessage; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; import org.jetbrains.annotations.Nullable; /** * Abstract traceable message for TCP discovery. */ -public abstract class TcpDiscoveryAbstractTraceableMessage extends TcpDiscoveryAbstractMessage implements TraceableMessage { +public abstract class TcpDiscoveryAbstractTraceableMessage extends TcpDiscoveryAbstractMessage + implements TraceableMessage, MarshallableMessage { /** Container. */ private SpanContainer spanContainer = new SpanContainer(); /** Serialization holder of {@link #spanContainer}'s bytes. */ - @SuppressWarnings("unused") - @Order(value = 0, method = "spanBytes") - @Nullable byte[] spanBytesHolder; + @Order(0) + @Nullable byte[] spanContainerBytes; /** * Default constructor for {@link DiscoveryMessageFactory}. @@ -74,21 +77,19 @@ public Object readResolve() { return this; } - /** @return {@link #spanContainer}'s bytes. */ - public @Nullable byte[] spanBytes() { - return spanContainer == null ? null : spanContainer.serializedSpanBytes(); + /** {@inheritDoc} */ + @Override public SpanContainer spanContainer() { + return spanContainer; } - /** @param spanBytes {@link #spanContainer}'s bytes. */ - public void spanBytes(@Nullable byte[] spanBytes) { - if (spanBytes == null) - return; - - spanContainer.serializedSpanBytes(spanBytes); + /** {@inheritDoc} */ + @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { + spanContainerBytes = spanContainer == null ? null : spanContainer.serializedSpanBytes(); } /** {@inheritDoc} */ - @Override public SpanContainer spanContainer() { - return spanContainer; + @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { + if (spanContainerBytes != null) + spanContainer.serializedSpanBytes(spanContainerBytes); } } diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryCustomEventMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryCustomEventMessage.java index 4b860f5e96267..5ac1523f0a0a8 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryCustomEventMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryCustomEventMessage.java @@ -35,7 +35,7 @@ */ @TcpDiscoveryRedirectToClient @TcpDiscoveryEnsureDelivery -public class TcpDiscoveryCustomEventMessage extends TcpDiscoveryAbstractTraceableMessage implements Message { +public class TcpDiscoveryCustomEventMessage extends TcpDiscoveryAbstractTraceableMessage { /** */ private static final long serialVersionUID = 0L; @@ -101,13 +101,14 @@ public DiscoveryCustomMessage message() { * @param marsh Marshaller. */ // TODO: Should be removed in https://issues.apache.org/jira/browse/IGNITE-27627 - public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { + @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { + super.prepareMarshal(marsh); + if (msg instanceof Message) serMsg = (Message)msg; else { - assert msgBytes == null || msg.isMutable() : "Message bytes are not null for immutable message: msg =" + msg; - - msgBytes = U.marshal(marsh, msg); + if (msg != null) + msgBytes = U.marshal(marsh, msg); } } @@ -118,7 +119,9 @@ public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { * @param ldr Class loader. */ // TODO: Should be removed in https://issues.apache.org/jira/browse/IGNITE-27627 - public void finishUnmarhal(Marshaller marsh, ClassLoader ldr) throws IgniteCheckedException { + @Override public void finishUnmarshal(Marshaller marsh, ClassLoader ldr) throws IgniteCheckedException { + super.finishUnmarshal(marsh, ldr); + if (msg != null) return; @@ -126,7 +129,8 @@ public void finishUnmarhal(Marshaller marsh, ClassLoader ldr) throws IgniteCheck msg = (DiscoveryCustomMessage)serMsg; else { try { - msg = U.unmarshal(marsh, msgBytes, ldr); + if (msgBytes != null) + msg = U.unmarshal(marsh, msgBytes, ldr); } catch (IgniteCheckedException e) { // Try to resurrect a message in a case of deserialization failure diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeFailedMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeFailedMessage.java index 7de93d625c738..7e08ac134def7 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeFailedMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeFailedMessage.java @@ -20,7 +20,6 @@ import java.util.UUID; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; /** @@ -29,7 +28,7 @@ */ @TcpDiscoveryEnsureDelivery @TcpDiscoveryRedirectToClient -public class TcpDiscoveryNodeFailedMessage extends TcpDiscoveryAbstractTraceableMessage implements Message { +public class TcpDiscoveryNodeFailedMessage extends TcpDiscoveryAbstractTraceableMessage { /** */ private static final long serialVersionUID = 0L; diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java index 8e70196ab051b..c307c5c3cc5d2 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java @@ -20,7 +20,6 @@ import java.util.UUID; import org.apache.ignite.internal.managers.discovery.DiscoveryMessageFactory; import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.plugin.extensions.communication.Message; /** * Sent by node that is stopping to coordinator across the ring, @@ -28,7 +27,7 @@ */ @TcpDiscoveryEnsureDelivery @TcpDiscoveryRedirectToClient -public class TcpDiscoveryNodeLeftMessage extends TcpDiscoveryAbstractTraceableMessage implements Message { +public class TcpDiscoveryNodeLeftMessage extends TcpDiscoveryAbstractTraceableMessage { /** */ private static final long serialVersionUID = 0L; diff --git a/modules/core/src/main/resources/META-INF/classnames.properties b/modules/core/src/main/resources/META-INF/classnames.properties index cb6e27862f6b6..f97c0ff469883 100644 --- a/modules/core/src/main/resources/META-INF/classnames.properties +++ b/modules/core/src/main/resources/META-INF/classnames.properties @@ -1172,7 +1172,6 @@ org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPar org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$RebalanceFutureState org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionExchangeId org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionFullMap -org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionSupplyMessage org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsAbstractMessage org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture$2 diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/CacheEntryPredicateAdapterMessageTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/CacheEntryPredicateAdapterMessageTest.java index 6697942a1dc63..f56dddb7daecf 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/CacheEntryPredicateAdapterMessageTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/CacheEntryPredicateAdapterMessageTest.java @@ -17,11 +17,14 @@ package org.apache.ignite.internal.managers.communication; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.processors.cache.CacheEntryPredicateAdapter; import org.apache.ignite.internal.processors.cache.CacheObject; import org.apache.ignite.internal.util.typedef.F; +import org.apache.ignite.internal.util.typedef.internal.U; import org.junit.Test; +import static org.apache.ignite.marshaller.Marshallers.jdk; import static org.apache.ignite.testframework.GridTestUtils.assertThrowsWithCause; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; @@ -32,56 +35,88 @@ public class CacheEntryPredicateAdapterMessageTest { /** */ @Test public void testCacheEntryPredicateAdapterCode() { - assertEquals(0, new CacheEntryPredicateAdapter().code()); - assertEquals(0, new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.OTHER).code()); - assertEquals(1, new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.VALUE).code()); - assertEquals(1, new CacheEntryPredicateAdapter((CacheObject)null).code()); - assertEquals(2, new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.HAS_VALUE).code()); - assertEquals(3, new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.HAS_NO_VALUE).code()); - assertEquals(4, new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.ALWAYS_FALSE).code()); + assertEquals(0, prepare(new CacheEntryPredicateAdapter())); + assertEquals(0, prepare(new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.OTHER))); + assertEquals(1, prepare(new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.VALUE))); + assertEquals(1, prepare(new CacheEntryPredicateAdapter((CacheObject)null))); + assertEquals(2, prepare(new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.HAS_VALUE))); + assertEquals(3, prepare(new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.HAS_NO_VALUE))); + assertEquals(4, prepare(new CacheEntryPredicateAdapter(CacheEntryPredicateAdapter.PredicateType.ALWAYS_FALSE))); for (CacheEntryPredicateAdapter.PredicateType t : CacheEntryPredicateAdapter.PredicateType.values()) { - assertTrue(new CacheEntryPredicateAdapter(t).code() >= 0); - assertTrue(new CacheEntryPredicateAdapter(t).code() < 5); + assertTrue(prepare(new CacheEntryPredicateAdapter(t)) >= 0); + assertTrue(prepare(new CacheEntryPredicateAdapter(t)) < 5); } } + /** */ + byte prepare(CacheEntryPredicateAdapter msg) { + try { + msg.prepareMarshal(jdk()); + } + catch (IgniteCheckedException e) { + throw new RuntimeException(e); + } + + return msg.code(); + } + /** */ @Test - public void testCacheEntryPredicateAdapterFromCode() { + public void testCacheEntryPredicateAdapterFromCode() throws IgniteCheckedException { CacheEntryPredicateAdapter msg = new CacheEntryPredicateAdapter((CacheObject)null); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(CacheEntryPredicateAdapter.PredicateType.VALUE, msg.type()); msg.code((byte)0); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(CacheEntryPredicateAdapter.PredicateType.OTHER, msg.type()); msg.code((byte)1); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(CacheEntryPredicateAdapter.PredicateType.VALUE, msg.type()); msg.code((byte)2); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(CacheEntryPredicateAdapter.PredicateType.HAS_VALUE, msg.type()); msg.code((byte)3); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(CacheEntryPredicateAdapter.PredicateType.HAS_NO_VALUE, msg.type()); msg.code((byte)4); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(CacheEntryPredicateAdapter.PredicateType.ALWAYS_FALSE, msg.type()); - Throwable t = assertThrowsWithCause(() -> msg.code((byte)5), IllegalArgumentException.class); + Throwable t = assertThrowsWithCause(() -> { + msg.code((byte)5); + + try { + msg.finishUnmarshal(jdk(), U.gridClassLoader()); + } + catch (IgniteCheckedException e) { + throw new RuntimeException(e); + } + }, IllegalArgumentException.class); assertEquals("Unknown cache entry predicate type code: 5", t.getMessage()); } /** */ @Test - public void testConversionConsistency() { + public void testConversionConsistency() throws IgniteCheckedException { for (CacheEntryPredicateAdapter.PredicateType t : F.concat(CacheEntryPredicateAdapter.PredicateType.values())) { CacheEntryPredicateAdapter msg = new CacheEntryPredicateAdapter(t); assertEquals(t, msg.type()); CacheEntryPredicateAdapter newMsg = new CacheEntryPredicateAdapter(); + + msg.prepareMarshal(jdk()); + newMsg.code(msg.code()); + newMsg.finishUnmarshal(jdk(), U.gridClassLoader()); + assertEquals(msg.type(), newMsg.type()); } } diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IndexKeyTypeMessageTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IndexKeyTypeMessageTest.java index 642615c06d3ee..4264d2772f877 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IndexKeyTypeMessageTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IndexKeyTypeMessageTest.java @@ -17,11 +17,14 @@ package org.apache.ignite.internal.managers.communication; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.cache.query.index.IndexKeyTypeMessage; import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyType; import org.apache.ignite.internal.util.typedef.F; +import org.apache.ignite.internal.util.typedef.internal.U; import org.junit.Test; +import static org.apache.ignite.marshaller.Marshallers.jdk; import static org.apache.ignite.testframework.GridTestUtils.assertThrowsWithCause; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -33,132 +36,193 @@ public class IndexKeyTypeMessageTest { /** */ @Test public void testIndexKeyTypeCode() { - assertEquals(Byte.MIN_VALUE, new IndexKeyTypeMessage(null).code()); - assertEquals(-1, new IndexKeyTypeMessage(IndexKeyType.UNKNOWN).code()); - assertEquals(0, new IndexKeyTypeMessage(IndexKeyType.NULL).code()); - assertEquals(1, new IndexKeyTypeMessage(IndexKeyType.BOOLEAN).code()); - assertEquals(2, new IndexKeyTypeMessage(IndexKeyType.BYTE).code()); - assertEquals(3, new IndexKeyTypeMessage(IndexKeyType.SHORT).code()); - assertEquals(4, new IndexKeyTypeMessage(IndexKeyType.INT).code()); - assertEquals(5, new IndexKeyTypeMessage(IndexKeyType.LONG).code()); - assertEquals(6, new IndexKeyTypeMessage(IndexKeyType.DECIMAL).code()); - assertEquals(7, new IndexKeyTypeMessage(IndexKeyType.DOUBLE).code()); - assertEquals(8, new IndexKeyTypeMessage(IndexKeyType.FLOAT).code()); - assertEquals(9, new IndexKeyTypeMessage(IndexKeyType.TIME).code()); - assertEquals(10, new IndexKeyTypeMessage(IndexKeyType.DATE).code()); - assertEquals(11, new IndexKeyTypeMessage(IndexKeyType.TIMESTAMP).code()); - assertEquals(12, new IndexKeyTypeMessage(IndexKeyType.BYTES).code()); - assertEquals(13, new IndexKeyTypeMessage(IndexKeyType.STRING).code()); - assertEquals(14, new IndexKeyTypeMessage(IndexKeyType.STRING_IGNORECASE).code()); - assertEquals(15, new IndexKeyTypeMessage(IndexKeyType.BLOB).code()); - assertEquals(16, new IndexKeyTypeMessage(IndexKeyType.CLOB).code()); - assertEquals(17, new IndexKeyTypeMessage(IndexKeyType.ARRAY).code()); - assertEquals(18, new IndexKeyTypeMessage(IndexKeyType.RESULT_SET).code()); - assertEquals(19, new IndexKeyTypeMessage(IndexKeyType.JAVA_OBJECT).code()); - assertEquals(20, new IndexKeyTypeMessage(IndexKeyType.UUID).code()); - assertEquals(21, new IndexKeyTypeMessage(IndexKeyType.STRING_FIXED).code()); - assertEquals(22, new IndexKeyTypeMessage(IndexKeyType.GEOMETRY).code()); - assertEquals(24, new IndexKeyTypeMessage(IndexKeyType.TIMESTAMP_TZ).code()); - assertEquals(25, new IndexKeyTypeMessage(IndexKeyType.ENUM).code()); + assertEquals(Byte.MIN_VALUE, prepare(new IndexKeyTypeMessage(null))); + assertEquals(-1, prepare(new IndexKeyTypeMessage(IndexKeyType.UNKNOWN))); + assertEquals(0, prepare(new IndexKeyTypeMessage(IndexKeyType.NULL))); + assertEquals(1, prepare(new IndexKeyTypeMessage(IndexKeyType.BOOLEAN))); + assertEquals(2, prepare(new IndexKeyTypeMessage(IndexKeyType.BYTE))); + assertEquals(3, prepare(new IndexKeyTypeMessage(IndexKeyType.SHORT))); + assertEquals(4, prepare(new IndexKeyTypeMessage(IndexKeyType.INT))); + assertEquals(5, prepare(new IndexKeyTypeMessage(IndexKeyType.LONG))); + assertEquals(6, prepare(new IndexKeyTypeMessage(IndexKeyType.DECIMAL))); + assertEquals(7, prepare(new IndexKeyTypeMessage(IndexKeyType.DOUBLE))); + assertEquals(8, prepare(new IndexKeyTypeMessage(IndexKeyType.FLOAT))); + assertEquals(9, prepare(new IndexKeyTypeMessage(IndexKeyType.TIME))); + assertEquals(10, prepare(new IndexKeyTypeMessage(IndexKeyType.DATE))); + assertEquals(11, prepare(new IndexKeyTypeMessage(IndexKeyType.TIMESTAMP))); + assertEquals(12, prepare(new IndexKeyTypeMessage(IndexKeyType.BYTES))); + assertEquals(13, prepare(new IndexKeyTypeMessage(IndexKeyType.STRING))); + assertEquals(14, prepare(new IndexKeyTypeMessage(IndexKeyType.STRING_IGNORECASE))); + assertEquals(15, prepare(new IndexKeyTypeMessage(IndexKeyType.BLOB))); + assertEquals(16, prepare(new IndexKeyTypeMessage(IndexKeyType.CLOB))); + assertEquals(17, prepare(new IndexKeyTypeMessage(IndexKeyType.ARRAY))); + assertEquals(18, prepare(new IndexKeyTypeMessage(IndexKeyType.RESULT_SET))); + assertEquals(19, prepare(new IndexKeyTypeMessage(IndexKeyType.JAVA_OBJECT))); + assertEquals(20, prepare(new IndexKeyTypeMessage(IndexKeyType.UUID))); + assertEquals(21, prepare(new IndexKeyTypeMessage(IndexKeyType.STRING_FIXED))); + assertEquals(22, prepare(new IndexKeyTypeMessage(IndexKeyType.GEOMETRY))); + assertEquals(24, prepare(new IndexKeyTypeMessage(IndexKeyType.TIMESTAMP_TZ))); + assertEquals(25, prepare(new IndexKeyTypeMessage(IndexKeyType.ENUM))); for (IndexKeyType keyType : IndexKeyType.values()) - assertTrue(new IndexKeyTypeMessage(keyType).code() != IndexKeyTypeMessage.NULL_VALUE_CODE); + assertTrue(prepare(new IndexKeyTypeMessage(keyType)) != IndexKeyTypeMessage.NULL_VALUE_CODE); + } + + /** */ + byte prepare(IndexKeyTypeMessage msg) { + try { + msg.prepareMarshal(jdk()); + } + catch (IgniteCheckedException e) { + throw new RuntimeException(e); + } + + return msg.code(); } /** */ @Test - public void testIndexKeyTypeFromCode() { + public void testIndexKeyTypeFromCode() throws IgniteCheckedException { IndexKeyTypeMessage msg = new IndexKeyTypeMessage(null); msg.code(IndexKeyTypeMessage.NULL_VALUE_CODE); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertNull(msg.value()); msg.code((byte)-1); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.UNKNOWN, msg.value()); msg.code((byte)0); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.NULL, msg.value()); msg.code((byte)1); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.BOOLEAN, msg.value()); msg.code((byte)2); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.BYTE, msg.value()); msg.code((byte)3); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.SHORT, msg.value()); msg.code((byte)4); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.INT, msg.value()); msg.code((byte)5); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.LONG, msg.value()); msg.code((byte)6); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.DECIMAL, msg.value()); msg.code((byte)7); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.DOUBLE, msg.value()); msg.code((byte)8); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.FLOAT, msg.value()); msg.code((byte)9); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.TIME, msg.value()); msg.code((byte)10); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.DATE, msg.value()); msg.code((byte)11); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.TIMESTAMP, msg.value()); msg.code((byte)12); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.BYTES, msg.value()); msg.code((byte)13); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.STRING, msg.value()); msg.code((byte)14); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.STRING_IGNORECASE, msg.value()); msg.code((byte)15); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.BLOB, msg.value()); msg.code((byte)16); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.CLOB, msg.value()); msg.code((byte)17); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.ARRAY, msg.value()); msg.code((byte)18); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.RESULT_SET, msg.value()); msg.code((byte)19); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.JAVA_OBJECT, msg.value()); msg.code((byte)20); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.UUID, msg.value()); msg.code((byte)21); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.STRING_FIXED, msg.value()); msg.code((byte)22); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.GEOMETRY, msg.value()); msg.code((byte)24); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.TIMESTAMP_TZ, msg.value()); msg.code((byte)25); + msg.finishUnmarshal(jdk(), U.gridClassLoader()); assertSame(IndexKeyType.ENUM, msg.value()); - Throwable t = assertThrowsWithCause(() -> msg.code((byte)23), IllegalArgumentException.class); + Throwable t = assertThrowsWithCause( + () -> { + msg.code((byte)23); + + try { + msg.finishUnmarshal(jdk(), U.gridClassLoader()); + } + catch (IgniteCheckedException e) { + throw new RuntimeException(e); + } + }, + IllegalArgumentException.class); assertEquals("Unknown index key type code: " + 23, t.getMessage()); for (byte c = 26; c >= 26 && c <= Byte.MAX_VALUE; ++c) { byte c0 = c; - t = assertThrowsWithCause(() -> msg.code(c0), IllegalArgumentException.class); + t = assertThrowsWithCause( + () -> { + msg.code(c0); + + try { + msg.finishUnmarshal(jdk(), U.gridClassLoader()); + } + catch (IgniteCheckedException e) { + throw new RuntimeException(e); + } + }, + IllegalArgumentException.class); assertEquals("Unknown index key type code: " + c0, t.getMessage()); } @@ -166,7 +230,17 @@ public void testIndexKeyTypeFromCode() { for (byte c = (byte)(IndexKeyTypeMessage.NULL_VALUE_CODE + 1); c < -1; ++c) { byte c0 = c; - t = assertThrowsWithCause(() -> msg.code(c0), IllegalArgumentException.class); + t = assertThrowsWithCause( + () -> { + msg.code(c0); + + try { + msg.finishUnmarshal(jdk(), U.gridClassLoader()); + } + catch (IgniteCheckedException e) { + throw new RuntimeException(e); + } + }, IllegalArgumentException.class); assertEquals("Unknown index key type code: " + c0, t.getMessage()); } @@ -174,15 +248,20 @@ public void testIndexKeyTypeFromCode() { /** */ @Test - public void testConversionConsistency() { + public void testConversionConsistency() throws IgniteCheckedException { for (IndexKeyType keyType : F.concat(IndexKeyType.values(), (IndexKeyType)null)) { IndexKeyTypeMessage msg = new IndexKeyTypeMessage(keyType); assertEquals(keyType, msg.value()); IndexKeyTypeMessage newMsg = new IndexKeyTypeMessage(); + + msg.prepareMarshal(jdk()); + newMsg.code(msg.code()); + newMsg.finishUnmarshal(jdk(), U.gridClassLoader()); + assertEquals(msg.value(), newMsg.value()); } } diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClientSlowDiscoveryAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClientSlowDiscoveryAbstractTest.java index d81ef05242002..fd6c6f9e4befd 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClientSlowDiscoveryAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClientSlowDiscoveryAbstractTest.java @@ -93,7 +93,7 @@ static class CustomMessageInterceptingDiscoverySpi extends TcpDiscoverySpi { TcpDiscoveryCustomEventMessage cm = (TcpDiscoveryCustomEventMessage)msg; try { - cm.finishUnmarhal(marshaller(), U.resolveClassLoader(ignite().configuration())); + cm.finishUnmarshal(marshaller(), U.resolveClassLoader(ignite().configuration())); assertNotNull(cm.message()); } 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 658c56872e66c..fe4a0eeb70809 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 @@ -163,7 +163,7 @@ private void doTestMarshallingBinaryMappingsLoadedFromClient(boolean receiveMeta try { TcpDiscoveryCustomEventMessage evtMsg = (TcpDiscoveryCustomEventMessage)msg; - evtMsg.finishUnmarhal(marshaller(), U.gridClassLoader()); + evtMsg.finishUnmarshal(marshaller(), U.gridClassLoader()); DiscoveryCustomMessage delegate = U.unwrapCustomMessage(evtMsg.message()); @@ -239,7 +239,7 @@ public void testBinaryMetaDelayedForComputeJobResult() throws Exception { try { TcpDiscoveryCustomEventMessage evtMsg = (TcpDiscoveryCustomEventMessage)msg; - evtMsg.finishUnmarhal(marshaller(), U.gridClassLoader()); + evtMsg.finishUnmarshal(marshaller(), U.gridClassLoader()); DiscoveryCustomMessage delegate = U.unwrapCustomMessage(evtMsg.message()); diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteSequentialNodeCrashRecoveryTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteSequentialNodeCrashRecoveryTest.java index cf36782a8ed90..b6162d71da137 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteSequentialNodeCrashRecoveryTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteSequentialNodeCrashRecoveryTest.java @@ -357,7 +357,7 @@ private DiscoveryCustomMessage extractCustomMessage(TcpDiscoveryCustomEventMessa DiscoveryCustomMessage msgObj = null; try { - msg.finishUnmarhal(marshaller(), U.gridClassLoader()); + msg.finishUnmarshal(marshaller(), U.gridClassLoader()); msgObj = msg.message(); } diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotJoiningClientTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotJoiningClientTest.java index 6e5f536f9ded0..fd42dc16fbf41 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotJoiningClientTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotJoiningClientTest.java @@ -246,7 +246,7 @@ private static class CoordinatorBlockingDiscoverySpi extends TcpDiscoverySpi { TcpDiscoveryCustomEventMessage m = (TcpDiscoveryCustomEventMessage)msg; try { - m.finishUnmarhal(marshaller(), U.resolveClassLoader(ignite().configuration())); + m.finishUnmarshal(marshaller(), U.resolveClassLoader(ignite().configuration())); if (U.unwrapCustomMessage(m.message()) instanceof InitMessage) rcvStartSnpReq.countDown(); diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/query/schema/IndexWithSameNameTestBase.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/query/schema/IndexWithSameNameTestBase.java index 7fd83a98ef7a2..e37cee61fc560 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/query/schema/IndexWithSameNameTestBase.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/query/schema/IndexWithSameNameTestBase.java @@ -313,7 +313,7 @@ public static class SchemaFinishListeningTcpDiscoverySpi extends TcpDiscoverySpi try { TcpDiscoveryCustomEventMessage evtMsg = (TcpDiscoveryCustomEventMessage)msg; - evtMsg.finishUnmarhal(marshaller(), U.gridClassLoader()); + evtMsg.finishUnmarshal(marshaller(), U.gridClassLoader()); DiscoveryCustomMessage discoCustomMsg = U.unwrapCustomMessage(evtMsg.message()); diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/BlockTcpDiscoverySpi.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/BlockTcpDiscoverySpi.java index 020d5f78f2319..00ed5f205abd4 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/BlockTcpDiscoverySpi.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/BlockTcpDiscoverySpi.java @@ -54,7 +54,7 @@ private synchronized void apply(ClusterNode addr, TcpDiscoveryAbstractMessage ms TcpDiscoveryCustomEventMessage cm = (TcpDiscoveryCustomEventMessage)msg; try { - cm.finishUnmarhal(marshaller(), U.gridClassLoader()); + cm.finishUnmarshal(marshaller(), U.gridClassLoader()); assertNotNull(cm.message()); } diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java index 24559bdb1f6a4..95494a0bcdb30 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java @@ -2609,7 +2609,7 @@ private static class TestCustomerEventAckSpi extends TcpDiscoverySpi { try { TcpDiscoveryCustomEventMessage evtMsg = (TcpDiscoveryCustomEventMessage)msg; - evtMsg.finishUnmarhal(marshaller(), U.gridClassLoader()); + evtMsg.finishUnmarshal(marshaller(), U.gridClassLoader()); DiscoveryCustomMessage custMsg = U.unwrapCustomMessage(evtMsg.message()); diff --git a/modules/core/src/test/resources/codegen/TestMarshallableMessageMarshallableSerializer.java b/modules/core/src/test/resources/codegen/TestMarshallableMessageMarshallableSerializer.java index 80602f050ee7d..97aef08f2f02c 100644 --- a/modules/core/src/test/resources/codegen/TestMarshallableMessageMarshallableSerializer.java +++ b/modules/core/src/test/resources/codegen/TestMarshallableMessageMarshallableSerializer.java @@ -51,7 +51,7 @@ public TestMarshallableMessageMarshallableSerializer(Marshaller marshaller, Clas msg.prepareMarshal(marshaller); } catch (IgniteCheckedException e) { - throw new IgniteException("Failed to marshal object", e); + throw new IgniteException("Failed to marshal object" + msg.getClass().getSimpleName(), e); } writer.onHeaderWritten(); @@ -112,7 +112,7 @@ public TestMarshallableMessageMarshallableSerializer(Marshaller marshaller, Clas msg.finishUnmarshal(marshaller, clsLdr); } catch (IgniteCheckedException e) { - throw new IgniteException("Failed to unmarshal object", e); + throw new IgniteException("Failed to unmarshal object" + msg.getClass().getSimpleName(), e); } return true; diff --git a/modules/core/src/test/resources/codegen/TestMessage.java b/modules/core/src/test/resources/codegen/TestMessage.java index 3e9812f905d40..6f3ef5eb1353a 100644 --- a/modules/core/src/test/resources/codegen/TestMessage.java +++ b/modules/core/src/test/resources/codegen/TestMessage.java @@ -62,8 +62,8 @@ public class TestMessage implements Message { @Order(10) BitSet bitSet; - @Order(value = 11, method = "overridenFieldMethod") - private String field; + @Order(value = 11) + String field; @Order(12) KeyCacheObject keyCacheObject; diff --git a/modules/core/src/test/resources/codegen/TestMessageSerializer.java b/modules/core/src/test/resources/codegen/TestMessageSerializer.java index 130b838a6da6b..825928b57d327 100644 --- a/modules/core/src/test/resources/codegen/TestMessageSerializer.java +++ b/modules/core/src/test/resources/codegen/TestMessageSerializer.java @@ -116,7 +116,7 @@ public class TestMessageSerializer implements MessageSerializer { writer.incrementState(); case 11: - if (!writer.writeString(msg.overridenFieldMethod())) + if (!writer.writeString(msg.field)) return false; writer.incrementState(); @@ -235,7 +235,7 @@ public class TestMessageSerializer implements MessageSerializer { reader.incrementState(); case 11: - msg.overridenFieldMethod(reader.readString()); + msg.field = reader.readString(); if (!reader.isLastRead()) return false;