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 fef259eec6a08..893a1ccaa4878 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 @@ -724,7 +724,7 @@ private String messageCollectionItemTypes(VariableElement field, TypeMirror type String descName = field.getSimpleName() + "CollDesc"; String typeName = desc.substring(desc.indexOf(' ') + 1, desc.indexOf('(')); - fields.add("private final static " + typeName + " " + descName + " = " + desc + ";"); + fields.add("private static final " + typeName + " " + descName + " = " + desc + ";"); return descName; } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/ClusterMetricsSnapshot.java b/modules/core/src/main/java/org/apache/ignite/internal/ClusterMetricsSnapshot.java index 60484f3280adf..4d2795abffa01 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/ClusterMetricsSnapshot.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/ClusterMetricsSnapshot.java @@ -109,6 +109,9 @@ public ClusterMetricsSnapshot() { * Creates snapshot based on the handled message. */ public ClusterMetricsSnapshot(NodeMetricsMessage m) { + // As in #deserialize(). + m.lastUpdateTime = U.currentTimeMillis(); + this.m = m; } 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 52c1091d054e0..a61c994b7fb46 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 @@ -129,6 +129,8 @@ import org.apache.ignite.internal.util.distributed.FullMessageSerializer; import org.apache.ignite.internal.util.distributed.InitMessage; import org.apache.ignite.internal.util.distributed.InitMessageSerializer; +import org.apache.ignite.lang.IgniteProductVersion; +import org.apache.ignite.lang.IgniteProductVersionSerializer; import org.apache.ignite.marshaller.Marshaller; import org.apache.ignite.plugin.extensions.communication.MessageFactory; import org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider; @@ -136,6 +138,8 @@ import org.apache.ignite.spi.communication.tcp.internal.TcpConnectionRequestDiscoveryMessageSerializer; import org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacket; import org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacketSerializer; +import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode; +import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNodeMarshallableSerializer; import org.apache.ignite.spi.discovery.tcp.messages.InetAddressMessage; import org.apache.ignite.spi.discovery.tcp.messages.InetAddressMessageSerializer; import org.apache.ignite.spi.discovery.tcp.messages.InetSocketAddressMessage; @@ -223,6 +227,8 @@ public DiscoveryMessageFactory(Marshaller marsh, ClassLoader clsLdr) { factory.register(-200, TcpDiscoveryCollectionMessage::new, new TcpDiscoveryCollectionMessageMarshallableSerializer(marsh, clsLdr)); + factory.register(-117, TcpDiscoveryNode::new, new TcpDiscoveryNodeMarshallableSerializer(marsh, clsLdr)); + factory.register(-116, IgniteProductVersion::new, new IgniteProductVersionSerializer()); factory.register(-115, SchemaAlterTableAddColumnOperation::new, new SchemaAlterTableAddColumnOperationSerializer()); factory.register(-114, SchemaIndexCreateOperation::new, new SchemaIndexCreateOperationMarshallableSerializer(marsh, clsLdr)); factory.register(-113, SchemaIndexDropOperation::new, new SchemaIndexDropOperationSerializer()); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java index 8c5564616d487..91825fd876ac0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java @@ -363,7 +363,7 @@ public void cleanCachesAndGroups() { */ public void addCacheGroup(CacheGroupDescriptor grpDesc, IgnitePredicate filter, CacheMode cacheMode) { CacheGroupAffinity old = registeredCacheGrps.put(grpDesc.groupId(), - new CacheGroupAffinity(grpDesc.cacheOrGroupName(), filter, cacheMode, grpDesc.persistenceEnabled())); + new CacheGroupAffinity(filter, cacheMode, grpDesc.persistenceEnabled())); assert old == null : old; } @@ -3389,9 +3389,6 @@ private Snapshot(AffinityTopologyVersion topVer, DiscoCache discoCache) { * */ private static class CacheGroupAffinity { - /** */ - private final String name; - /** Nodes filter. */ private final IgnitePredicate cacheFilter; @@ -3402,17 +3399,11 @@ private static class CacheGroupAffinity { private final boolean persistentCacheGrp; /** - * @param name Name. * @param cacheFilter Node filter. * @param cacheMode Cache mode. * @param persistentCacheGrp Persistence is configured for cache or not. */ - CacheGroupAffinity( - String name, - IgnitePredicate cacheFilter, - CacheMode cacheMode, - boolean persistentCacheGrp) { - this.name = name; + CacheGroupAffinity(IgnitePredicate cacheFilter, CacheMode cacheMode, boolean persistentCacheGrp) { this.cacheFilter = cacheFilter; this.cacheMode = cacheMode; this.persistentCacheGrp = persistentCacheGrp; diff --git a/modules/core/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java b/modules/core/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java index 1c78694550bd5..b8c02b60005ad 100644 --- a/modules/core/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java +++ b/modules/core/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java @@ -26,7 +26,10 @@ import java.util.regex.Pattern; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.IgniteVersionUtils; +import org.apache.ignite.internal.Order; +import org.apache.ignite.internal.managers.discovery.DiscoveryMessageFactory; import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.NotNull; /** @@ -37,7 +40,7 @@ * Two versions are compared in the following order: major number, * minor number, maintenance number, revision timestamp. */ -public class IgniteProductVersion implements Comparable, Externalizable { +public class IgniteProductVersion implements Comparable, Externalizable, Message { /** */ private static final long serialVersionUID = 0L; @@ -52,25 +55,31 @@ public class IgniteProductVersion implements Comparable, E Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)([-.]([^0123456789][^-]+)(-SNAPSHOT)?)?(-(\\d+))?(-([\\da-f]+))?"); /** Major version number. */ - private byte major; + @Order(0) + byte major; /** Minor version number. */ - private byte minor; + @Order(1) + byte minor; /** Maintenance version number. */ - private byte maintenance; + @Order(2) + byte maintenance; /** Stage of development. */ - private String stage; + @Order(3) + String stage; /** Revision timestamp. */ - private long revTs; + @Order(4) + long revTs; /** Revision hash. */ - private byte[] revHash; + @Order(5) + byte[] revHash; /** - * Empty constructor required by {@link Externalizable}. + * Empty constructor required by {@link Externalizable} and {@link DiscoveryMessageFactory}. */ public IgniteProductVersion() { // No-op. @@ -265,6 +274,11 @@ public int compareToIgnoreTimestamp(@NotNull IgniteProductVersion o) { revHash = U.readByteArray(in); } + /** {@inheritDoc} */ + @Override public short directType() { + return -116; + } + /** {@inheritDoc} */ @Override public String toString() { String revTsStr = IgniteVersionUtils.formatBuildTimeStamp(revTs * 1000); 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 02f56983d4114..0fce9fac5bb8d 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 @@ -2240,7 +2240,7 @@ private void processNodeAddedMessage(TcpDiscoveryNodeAddedMessage msg) { nodeAdded = true; if (msg.topologyHistory() != null) - topHist.putAll(msg.topologyHistory()); + topHist.putAll(upcast(msg.topologyHistory())); } else { if (log.isDebugEnabled()) 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 f549529989963..ac6218aa32b75 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 @@ -643,12 +643,11 @@ else if (log.isInfoEnabled()) { processed.add(n); - List top = U.arrayList(nodes, F.notIn(processed)); + Collection top = upcast(U.arrayList(nodes, F.notIn(processed))); topVer++; - NavigableMap> hist = updateTopologyHistory(topVer, - Collections.unmodifiableList(top)); + NavigableMap> hist = updateTopologyHistory(topVer, top); lsnr.onDiscovery( new DiscoveryNotification(EVT_NODE_FAILED, topVer, n, top, hist, null, null) @@ -1907,7 +1906,7 @@ private void prepareNodeAddedMessage( hist = new TreeMap<>(topHist); } - nodeAddedMsg.topologyHistory(hist); + nodeAddedMsg.topologyHistory(downcast(hist)); } } } @@ -2451,6 +2450,31 @@ private static WorkersRegistry getWorkerRegistry(TcpDiscoverySpi spi) { return spi.ignite() instanceof IgniteEx ? ((IgniteEx)spi.ignite()).context().workersRegistry() : null; } + /** + * Upcasts collection type. + * + * @param

Parent type. + * @param Child type. + * @param c Initial collection. + * @return Resulting collection. + */ + private static Collection

upcast(Collection c) { + return (Collection

)c; + } + + /** + * Downcasts type of map's collection value. + * + * @param Map key type. + * @param

Parent type. + * @param Child type. + * @param m Initial collections map. + * @return Resulting map. + */ + private static Map> downcast(Map> m) { + return (Map>)(Map)m; + } + /** * Discovery messages history used for client reconnect. */ @@ -5086,7 +5110,7 @@ else if (spiState == CONNECTING) joiningNodesDiscoDataList = new ArrayList<>(); topHist.clear(); - topHist.putAll(msg.topologyHistory()); + topHist.putAll(upcast(msg.topologyHistory())); pendingMsgs.reset(msg.messages()); } diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java index e115a3cca03b1..c18760dcb5640 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java @@ -43,7 +43,6 @@ import org.apache.ignite.internal.processors.tracing.NoopTracing; import org.apache.ignite.internal.processors.tracing.Tracing; import org.apache.ignite.internal.util.typedef.F; -import org.apache.ignite.internal.util.typedef.internal.A; import org.apache.ignite.internal.util.typedef.internal.LT; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.spi.IgniteSpiContext; @@ -140,18 +139,6 @@ abstract class TcpDiscoveryImpl { /** Tracing. */ protected Tracing tracing; - /** - * Upcasts collection type. - * - * @param c Initial collection. - * @return Resulting collection. - */ - protected static Collection upcast(Collection c) { - A.notNull(c, "c"); - - return (Collection)c; - } - /** * @param spi Adapter. */ @@ -495,6 +482,19 @@ protected final DebugLogger messageLogger(TcpDiscoveryAbstractMessage msg) { return msg.traceLogLevel() ? traceLog : debugLog; } + /** + * Upcasts type of map's collection value. + * + * @param Map key type. + * @param

Parent type. + * @param Child type. + * @param m Initial map of collections. + * @return Resulting map. + */ + protected static Map> upcast(Map> m) { + return (Map>)(Map)m; + } + /** * */ diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java index 89f1f492e9272..0630144dc753b 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java @@ -30,11 +30,13 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.cache.CacheMetrics; import org.apache.ignite.cluster.ClusterMetrics; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.internal.ClusterMetricsSnapshot; import org.apache.ignite.internal.IgniteNodeAttributes; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.managers.discovery.IgniteClusterNode; import org.apache.ignite.internal.util.lang.GridMetadataAwareAdapter; import org.apache.ignite.internal.util.tostring.GridToStringExclude; @@ -44,8 +46,11 @@ import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgnitePredicate; import org.apache.ignite.lang.IgniteProductVersion; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; import org.apache.ignite.spi.discovery.DiscoveryMetricsProvider; import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; +import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeMetricsMessage; import org.jetbrains.annotations.Nullable; import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_NODE_CONSISTENT_ID; @@ -58,27 +63,38 @@ * public due to certain limitations of Java technology. */ public class TcpDiscoveryNode extends GridMetadataAwareAdapter implements IgniteClusterNode, - Comparable, Externalizable { + Comparable, Externalizable, MarshallableMessage { /** */ private static final long serialVersionUID = 0L; /** Node ID. */ - private volatile UUID id; + @Order(0) + volatile UUID id; /** Consistent ID. */ @GridToStringInclude private Object consistentId; + /** Serialized {@link #consistentId}. */ + @Order(1) + byte[] consistentIdBytes; + /** Node attributes. */ @GridToStringExclude private Map attrs; + /** Serialized {@link #attrs}. */ + @Order(2) + byte[] attrsBytes; + /** Internal discovery addresses as strings. */ @GridToStringInclude - private Collection addrs; + @Order(3) + Collection addrs; /** Internal discovery host names as strings. */ - private Collection hostNames; + @Order(4) + Collection hostNames; /** */ @GridToStringInclude @@ -86,21 +102,29 @@ public class TcpDiscoveryNode extends GridMetadataAwareAdapter implements Ignite /** */ @GridToStringInclude - private int discPort; + @Order(5) + int discPort; /** Node metrics. */ @GridToStringExclude - private volatile ClusterMetrics metrics; + volatile ClusterMetrics metrics; + + /** Node metrics message. */ + @GridToStringExclude + @Order(6) + volatile TcpDiscoveryNodeMetricsMessage metricsMsg; /** Node cache metrics. */ @GridToStringExclude private volatile Map cacheMetrics; /** Node order in the topology. */ - private volatile long order; + @Order(7) + volatile long order; /** Node order in the topology (internal). */ - private volatile long intOrder; + @Order(8) + volatile long intOrder; /** The most recent time when metrics update message was received from the node. */ @GridToStringExclude @@ -122,7 +146,8 @@ public class TcpDiscoveryNode extends GridMetadataAwareAdapter implements Ignite private boolean loc; /** Version. */ - private IgniteProductVersion ver; + @Order(9) + IgniteProductVersion ver; /** Alive check time (used by clients). */ @GridToStringExclude @@ -130,7 +155,8 @@ public class TcpDiscoveryNode extends GridMetadataAwareAdapter implements Ignite /** Client router node ID. */ @GridToStringExclude - private UUID clientRouterNodeId; + @Order(10) + UUID clientRouterNodeId; /** */ @GridToStringExclude @@ -193,6 +219,38 @@ public TcpDiscoveryNode(UUID id, sockAddrs = U.toSocketAddresses(this, discPort); } + /** {@inheritDoc} */ + @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { + if (attrs != null) + attrsBytes = U.marshal(marsh, attrs); + + if (consistentId != null) + consistentIdBytes = U.marshal(marsh, consistentId); + + metricsMsg = new TcpDiscoveryNodeMetricsMessage(metrics); + } + + /** {@inheritDoc} */ + @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { + if (attrsBytes != null) + attrs = U.unmarshal(marsh, attrsBytes, clsLdr); + + if (consistentIdBytes != null) + consistentId = U.unmarshal(marsh, consistentIdBytes, clsLdr); + + if (metricsMsg != null) + metrics = new ClusterMetricsSnapshot(metricsMsg); + + attrsBytes = null; + consistentIdBytes = null; + metricsMsg = null; + } + + /** {@inheritDoc} */ + @Override public short directType() { + return -117; + } + /** * @return Last successfully connected address. */ @@ -304,7 +362,7 @@ public Map getAttributes() { /** {@inheritDoc} */ @Override public void setCacheMetrics(Map cacheMetrics) { - this.cacheMetrics = cacheMetrics != null ? cacheMetrics : Collections.emptyMap(); + this.cacheMetrics = cacheMetrics != null ? cacheMetrics : Collections.emptyMap(); } /** @@ -463,7 +521,7 @@ public void visible(boolean visible) { /** {@inheritDoc} */ @Override public boolean isClient() { if (!cacheCliInit) { - Boolean clientModeAttr = ((ClusterNode)this).attribute(IgniteNodeAttributes.ATTR_CLIENT_MODE); + Boolean clientModeAttr = (Boolean)attrs.get(IgniteNodeAttributes.ATTR_CLIENT_MODE); cacheCli = clientModeAttr != null && clientModeAttr; diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryJoinRequestMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryJoinRequestMessage.java index 2b6bffa4b4fbe..361ced45a9fcf 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryJoinRequestMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryJoinRequestMessage.java @@ -17,12 +17,8 @@ package org.apache.ignite.spi.discovery.tcp.messages; -import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.util.typedef.internal.S; -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.spi.discovery.tcp.internal.DiscoveryDataPacket; import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode; @@ -32,17 +28,13 @@ * Initial message sent by a node that wants to enter topology. * Sent to random node during SPI start. Then forwarded directly to coordinator. */ -public class TcpDiscoveryJoinRequestMessage extends TcpDiscoveryAbstractTraceableMessage implements MarshallableMessage { +public class TcpDiscoveryJoinRequestMessage extends TcpDiscoveryAbstractTraceableMessage { /** */ private static final long serialVersionUID = 0L; /** New node that wants to join the topology. */ - private TcpDiscoveryNode node; - - /** Serialized {@link #node}. */ - // TODO Remove the field after completing https://issues.apache.org/jira/browse/IGNITE-27899. @Order(0) - byte[] nodeBytes; + TcpDiscoveryNode node; /** Discovery data container. */ @Order(1) @@ -94,17 +86,6 @@ public void responded(boolean responded) { setFlag(RESPONDED_FLAG_POS, responded); } - /** {@inheritDoc} */ - @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { - if (node != null) - nodeBytes = U.marshal(marsh, node); - } - - /** {@inheritDoc} */ - @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { - if (nodeBytes != null) - node = U.unmarshal(marsh, nodeBytes, clsLdr); - } /** {@inheritDoc} */ @Override public boolean equals(Object obj) { diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddFinishedMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddFinishedMessage.java index 9c0f7a1704b7a..ac56920d1f95b 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddFinishedMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddFinishedMessage.java @@ -25,7 +25,6 @@ import org.apache.ignite.internal.util.typedef.internal.S; 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.spi.discovery.tcp.internal.DiscoveryDataPacket; import org.jetbrains.annotations.Nullable; @@ -34,7 +33,7 @@ */ @TcpDiscoveryEnsureDelivery @TcpDiscoveryRedirectToClient -public class TcpDiscoveryNodeAddFinishedMessage extends TcpDiscoveryAbstractTraceableMessage implements MarshallableMessage { +public class TcpDiscoveryNodeAddFinishedMessage extends TcpDiscoveryAbstractTraceableMessage { /** */ private static final long serialVersionUID = 0L; diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddedMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddedMessage.java index ffe8a1bf412d4..ce375a3010958 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddedMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddedMessage.java @@ -20,40 +20,29 @@ import java.util.Collection; import java.util.Map; import java.util.UUID; -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.managers.discovery.DiscoveryMessageFactory; -import org.apache.ignite.internal.util.tostring.GridToStringExclude; 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.internal.util.typedef.internal.U; -import org.apache.ignite.marshaller.Marshaller; -import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; import org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacket; import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode; import org.jetbrains.annotations.Nullable; /** - * TODO: Use NodeMessage for {@link TcpDiscoveryNode} and {@link ClusterNode} after https://issues.apache.org/jira/browse/IGNITE-27899 * Message telling nodes that new node should be added to topology. * When newly added node receives the message it connects to its next and finishes * join process. */ @TcpDiscoveryEnsureDelivery @TcpDiscoveryRedirectToClient -public class TcpDiscoveryNodeAddedMessage extends TcpDiscoveryAbstractTraceableMessage implements MarshallableMessage { +public class TcpDiscoveryNodeAddedMessage extends TcpDiscoveryAbstractTraceableMessage { /** */ private static final long serialVersionUID = 0L; /** Added node. */ - private TcpDiscoveryNode node; - - /** Marshalled {@link #node}. */ @Order(0) - @GridToStringExclude - byte[] nodeBytes; + TcpDiscoveryNode node; /** */ @Order(1) @@ -65,24 +54,16 @@ public class TcpDiscoveryNodeAddedMessage extends TcpDiscoveryAbstractTraceableM /** Current topology. Initialized by coordinator. */ @GridToStringInclude - private Collection top; - - /** Marshalled {@link #top}. */ @Order(3) - @GridToStringExclude - @Nullable byte[] topBytes; + @Nullable Collection top; /** */ @GridToStringInclude private transient Collection clientTop; /** Topology snapshots history. */ - private Map> topHist; - - /** Marshalled {@link #topHist}. */ @Order(4) - @GridToStringExclude - @Nullable byte[] topHistBytes; + Map> topHist; /** Start time of the first grid node. */ @Order(5) @@ -124,13 +105,10 @@ public TcpDiscoveryNodeAddedMessage(TcpDiscoveryNodeAddedMessage msg) { super(msg); node = msg.node; - nodeBytes = msg.nodeBytes; pendingMsgsMsg = msg.pendingMsgsMsg; top = msg.top; - topBytes = msg.topBytes; clientTop = msg.clientTop; topHist = msg.topHist; - topHistBytes = msg.topHistBytes; dataPacket = msg.dataPacket; gridStartTime = msg.gridStartTime; } @@ -178,7 +156,6 @@ public void messages(@Nullable Collection msgs) { */ public void topology(@Nullable Collection top) { this.top = top; - topBytes = null; } /** @@ -202,7 +179,7 @@ public Collection clientTopology() { * * @return Map with topology snapshots history. */ - public Map> topologyHistory() { + public Map> topologyHistory() { return topHist; } @@ -211,9 +188,8 @@ public Map> topologyHistory() { * * @param topHist Map with topology snapshots history. */ - public void topologyHistory(@Nullable Map> topHist) { + public void topologyHistory(@Nullable Map> topHist) { this.topHist = topHist; - topHistBytes = null; } /** @@ -246,36 +222,11 @@ public long gridStartTime() { return gridStartTime; } - /** @param marsh marshaller. */ - @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { - if (node != null) - nodeBytes = U.marshal(marsh, node); - - if (top != null) - topBytes = U.marshal(marsh, top); - - if (topHist != null) - topHistBytes = U.marshal(marsh, topHist); - } - /** {@inheritDoc} */ - @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { - if (nodeBytes != null) - node = U.unmarshal(marsh, nodeBytes, clsLdr); - - if (topBytes != null) - top = U.unmarshal(marsh, topBytes, clsLdr); - - if (topHistBytes != null) - topHist = U.unmarshal(marsh, topHistBytes, clsLdr); - - nodeBytes = null; - topBytes = null; - topHistBytes = null; + @Override public short directType() { + return 29; } - - /** {@inheritDoc} */ @Override public String toString() { return S.toString(TcpDiscoveryNodeAddedMessage.class, this, "super", super.toString()); diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentV2Test.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentV2Test.java index 5d8e966851c3c..f994cee551f1d 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentV2Test.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentV2Test.java @@ -29,7 +29,10 @@ import java.util.List; import java.util.Set; import java.util.UUID; + +import org.apache.ignite.cluster.ClusterMetrics; import org.apache.ignite.cluster.ClusterNode; +import org.apache.ignite.internal.ClusterMetricsSnapshot; import org.apache.ignite.internal.util.collection.BitSetIntSet; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteProductVersion; @@ -49,7 +52,11 @@ */ public class GridAffinityAssignmentV2Test { /** */ - protected DiscoveryMetricsProvider metrics = new SerializableMetricsProvider(); + protected DiscoveryMetricsProvider metrics = new SerializableMetricsProvider() { + @Override public ClusterMetrics metrics() { + return new ClusterMetricsSnapshot(); + } + }; /** */ protected IgniteProductVersion ver = new IgniteProductVersion(); diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryDeadNodeAddressResolvingTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryDeadNodeAddressResolvingTest.java index e07aee83326bf..ddd01e7c66482 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryDeadNodeAddressResolvingTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryDeadNodeAddressResolvingTest.java @@ -100,8 +100,11 @@ private void checkSockAddrsNull(GridDiscoveryManager disco, int topology, String ClusterNode clusterNode = node.get(); - Object sockAddrs = GridTestUtils.getFieldValue(clusterNode, "sockAddrs"); - assertNull(sockAddrs); + if (clusterNode instanceof TcpDiscoveryNode) { + Object sockAddrs = GridTestUtils.getFieldValue(clusterNode, "sockAddrs"); + + assertNull(sockAddrs); + } } /** diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java index 7ccf15f67733f..caed628d1d61b 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java @@ -106,7 +106,7 @@ @SuppressWarnings("TransientFieldInNonSerializableClass") public class IgniteProcessProxy implements IgniteEx { /** Grid proxies. */ - private static final transient ConcurrentMap gridProxies = new ConcurrentHashMap<>(); + private static final ConcurrentMap gridProxies = new ConcurrentHashMap<>(); /** Property that specify alternative {@code JAVA_HOME}. */ private static final String TEST_MULTIJVM_JAVA_HOME = "test.multijvm.java.home";