You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/04/25 18:01:25 UTC

ignite git commit: IGNITE-8372 ZookeeperClusterNode was made Externalizable to preserve serializing local node's metrics - Fixes #3907.

Repository: ignite
Updated Branches:
  refs/heads/master 1fb236935 -> 6bf7532d8


IGNITE-8372 ZookeeperClusterNode was made Externalizable to preserve serializing local node's metrics - Fixes #3907.

Signed-off-by: Alexey Goncharuk <al...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6bf7532d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6bf7532d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6bf7532d

Branch: refs/heads/master
Commit: 6bf7532d8eea481c829200861fd116d64c6f1b13
Parents: 1fb2369
Author: Sergey Chugunov <se...@gmail.com>
Authored: Wed Apr 25 20:59:25 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Apr 25 20:59:25 2018 +0300

----------------------------------------------------------------------
 .../zk/internal/ZookeeperClusterNode.java       | 56 +++++++++++++++++++-
 .../zk/internal/ZookeeperDiscoveryImpl.java     |  5 --
 2 files changed, 55 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/6bf7532d/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
----------------------------------------------------------------------
diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
index 3cb5fad..2fe3052 100644
--- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
+++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
@@ -17,6 +17,10 @@
 
 package org.apache.ignite.spi.discovery.zk.internal;
 
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Collections;
@@ -25,6 +29,7 @@ import java.util.Map;
 import java.util.UUID;
 import org.apache.ignite.cache.CacheMetrics;
 import org.apache.ignite.cluster.ClusterMetrics;
+import org.apache.ignite.internal.ClusterMetricsSnapshot;
 import org.apache.ignite.internal.IgniteNodeAttributes;
 import org.apache.ignite.internal.managers.discovery.IgniteClusterNode;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@ -41,7 +46,7 @@ import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_NODE_CONSISTE
 /**
  * Zookeeper Cluster Node.
  */
-public class ZookeeperClusterNode implements IgniteClusterNode, Serializable, Comparable<ZookeeperClusterNode> {
+public class ZookeeperClusterNode implements IgniteClusterNode, Externalizable, Comparable<ZookeeperClusterNode> {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -99,6 +104,11 @@ public class ZookeeperClusterNode implements IgniteClusterNode, Serializable, Co
     @GridToStringExclude
     private transient volatile boolean daemonInit;
 
+    /** */
+    public ZookeeperClusterNode() {
+        //No-op
+    }
+
     /**
      * @param id Node ID.
      * @param addrs Node addresses.
@@ -326,6 +336,50 @@ public class ZookeeperClusterNode implements IgniteClusterNode, Serializable, Co
     }
 
     /** {@inheritDoc} */
+    @Override public void writeExternal(ObjectOutput out) throws IOException {
+        U.writeUuid(out, id);
+        out.writeObject(consistentId);
+        out.writeLong(internalId);
+        out.writeLong(order);
+        out.writeObject(ver);
+        U.writeMap(out, attrs);
+        U.writeCollection(out, addrs);
+        U.writeCollection(out, hostNames);
+        out.writeLong(sesTimeout);
+        out.writeByte(flags);
+
+        // Cluster metrics
+        byte[] mtr = null;
+
+        ClusterMetrics metrics = this.metrics;
+
+        if (metrics != null)
+            mtr = ClusterMetricsSnapshot.serialize(metrics);
+
+        U.writeByteArray(out, mtr);
+    }
+
+    /** {@inheritDoc} */
+    @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        id = U.readUuid(in);
+        consistentId = (Serializable) in.readObject();
+        internalId = in.readLong();
+        order = in.readLong();
+        ver = (IgniteProductVersion) in.readObject();
+        attrs = U.sealMap(U.readMap(in));
+        addrs = U.readCollection(in);
+        hostNames = U.readCollection(in);
+        sesTimeout = in.readLong();
+        flags = in.readByte();
+
+        // Cluster metrics
+        byte[] mtr = U.readByteArray(in);
+
+        if (mtr != null)
+            metrics = ClusterMetricsSnapshot.deserialize(mtr, 0);
+    }
+
+    /** {@inheritDoc} */
     @Override public int compareTo(@Nullable ZookeeperClusterNode node) {
         if (node == null)
             return 1;

http://git-wip-us.apache.org/repos/asf/ignite/blob/6bf7532d/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
----------------------------------------------------------------------
diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
index 74670ac..0604458 100644
--- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
+++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
@@ -51,7 +51,6 @@ import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.configuration.CommunicationFailureResolver;
 import org.apache.ignite.events.EventType;
-import org.apache.ignite.internal.ClusterMetricsSnapshot;
 import org.apache.ignite.internal.IgniteClientDisconnectedCheckedException;
 import org.apache.ignite.internal.IgniteFutureTimeoutCheckedException;
 import org.apache.ignite.internal.IgniteInternalFuture;
@@ -2955,8 +2954,6 @@ public class ZookeeperDiscoveryImpl {
                 if (node.order() >= locNode.order())
                     break;
 
-                node.setMetrics(new ClusterMetricsSnapshot());
-
                 rtState.top.addNode(node);
             }
 
@@ -3448,8 +3445,6 @@ public class ZookeeperDiscoveryImpl {
         joinedNode.order(joinedEvtData.topVer);
         joinedNode.internalId(joinedEvtData.joinedInternalId);
 
-        joinedNode.setMetrics(new ClusterMetricsSnapshot());
-
         rtState.top.addNode(joinedNode);
 
         final List<ClusterNode> topSnapshot = rtState.top.topologySnapshot();