Added Affinity topology version and Pending exchanges to Visor data collector 
task.
(cherry picked from commit 7402ea1)


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

Branch: refs/heads/ignite-5398
Commit: b29b918aece6a99a12c8bf3f21c5419a9d97de25
Parents: d4c9997
Author: Alexey Kuznetsov <[email protected]>
Authored: Fri May 19 14:18:23 2017 +0700
Committer: Alexey Kuznetsov <[email protected]>
Committed: Fri May 19 15:01:23 2017 +0700

----------------------------------------------------------------------
 .../node/VisorAffinityTopologyVersion.java      | 72 ++++++++++++++++++++
 .../visor/node/VisorNodeDataCollectorJob.java   |  6 ++
 .../node/VisorNodeDataCollectorJobResult.java   | 40 +++++++++++
 .../visor/node/VisorNodeDataCollectorTask.java  |  4 ++
 .../node/VisorNodeDataCollectorTaskResult.java  | 31 ++++++++-
 5 files changed, 152 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorAffinityTopologyVersion.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorAffinityTopologyVersion.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorAffinityTopologyVersion.java
new file mode 100644
index 0000000..b3f6c48
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorAffinityTopologyVersion.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.visor.node;
+
+import java.io.Serializable;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.util.typedef.internal.S;
+
+/**
+ * Data transfer object for {@link AffinityTopologyVersion}
+ */
+public class VisorAffinityTopologyVersion implements Serializable {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** */
+    private long topVer;
+
+    /** */
+    private int minorTopVer;
+
+    /**
+     * Default constructor.
+     */
+    public VisorAffinityTopologyVersion() {
+        // No-op.
+    }
+
+    /**
+     * Create data transfer object for affinity topology version.
+     *
+     * @param affTopVer Affinity topology version.
+     */
+    public VisorAffinityTopologyVersion(AffinityTopologyVersion affTopVer) {
+        topVer = affTopVer.topologyVersion();
+        minorTopVer = affTopVer.minorTopologyVersion();
+    }
+
+    /**
+     * @return Topology version.
+     */
+    public long getTopologyVersion() {
+        return topVer;
+    }
+
+    /**
+     * @return Minor topology version.
+     */
+    public int getMinorTopologyVersion() {
+        return minorTopVer;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorAffinityTopologyVersion.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
index 694bc94..bfc3ac8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
@@ -24,6 +24,7 @@ import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.configuration.FileSystemConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
+import 
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager;
 import org.apache.ignite.internal.processors.igfs.IgfsProcessorAdapter;
 import org.apache.ignite.internal.util.ipc.IpcServerEndpoint;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -236,6 +237,11 @@ public class VisorNodeDataCollectorJob extends 
VisorJob<VisorNodeDataCollectorTa
         VisorNodeDataCollectorTaskArg arg) {
         res.gridName(ignite.name());
 
+        GridCachePartitionExchangeManager<Object, Object> exchange = 
ignite.context().cache().context().exchange();
+
+        res.readyAffinityVersion(new 
VisorAffinityTopologyVersion(exchange.readyAffinityVersion()));
+        res.hasPendingExchange(exchange.hasPendingExchange());
+
         res.topologyVersion(ignite.cluster().topologyVersion());
 
         long start0 = U.currentTimeMillis();

http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java
index 2c28c5e..d129e5f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.visor.node;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
+import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.visor.cache.VisorCache;
 import org.apache.ignite.internal.visor.event.VisorGridEvent;
 import org.apache.ignite.internal.visor.igfs.VisorIgfs;
@@ -65,6 +66,12 @@ public class VisorNodeDataCollectorJobResult implements 
Serializable {
     /** Errors count. */
     private long errCnt;
 
+    /** Topology version of latest completed partition exchange. */
+    private VisorAffinityTopologyVersion readyTopVer;
+
+    /** Whether pending exchange future exists. */
+    private boolean hasPendingExchange;
+
     /**
      * @return Grid name.
      */
@@ -190,4 +197,37 @@ public class VisorNodeDataCollectorJobResult implements 
Serializable {
     public void errorCount(long errCnt) {
         this.errCnt = errCnt;
     }
+
+    /**
+     * @return Topology version of latest completed partition exchange.
+     */
+    public VisorAffinityTopologyVersion readyAffinityVersion() {
+        return readyTopVer;
+    }
+
+    /**
+     * @param readyTopVer Topology version of latest completed partition 
exchange.
+     */
+    public void readyAffinityVersion(VisorAffinityTopologyVersion readyTopVer) 
{
+        this.readyTopVer = readyTopVer;
+    }
+
+    /**
+     * @return Whether pending exchange future exists.
+     */
+    public boolean hasPendingExchange() {
+        return hasPendingExchange;
+    }
+
+    /**
+     * @param hasPendingExchange Whether pending exchange future exists.
+     */
+    public void hasPendingExchange(boolean hasPendingExchange) {
+        this.hasPendingExchange = hasPendingExchange;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorNodeDataCollectorJobResult.class, this);
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java
index 0880ad7..061e2a7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java
@@ -113,5 +113,9 @@ public class VisorNodeDataCollectorTask extends 
VisorMultiNodeTask<VisorNodeData
 
         if (jobRes.igfssEx() != null)
             taskRes.igfssEx().put(nid, new 
VisorExceptionWrapper(jobRes.igfssEx()));
+
+        taskRes.readyAffinityVersions().put(nid, 
jobRes.readyAffinityVersion());
+
+        taskRes.pendingExchanges().put(nid, jobRes.hasPendingExchange());
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java
index c6fe418..673c247 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import org.apache.ignite.internal.LessNamingBean;
+import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.visor.cache.VisorCache;
 import org.apache.ignite.internal.visor.event.VisorGridEvent;
 import org.apache.ignite.internal.visor.igfs.VisorIgfs;
@@ -77,6 +78,13 @@ public class VisorNodeDataCollectorTaskResult implements 
Serializable, LessNamin
     /** Exceptions caught during collecting IGFS from nodes. */
     private final Map<UUID, VisorExceptionWrapper> igfssEx = new HashMap<>();
 
+    /** Topology version of latest completed partition exchange from nodes. */
+    private Map<UUID, VisorAffinityTopologyVersion> readyTopVers = new 
HashMap<>();
+
+    /** Whether pending exchange future exists from nodes. */
+    private Map<UUID, Boolean> pendingExchanges = new HashMap<>();
+
+
     /**
      * @return {@code true} If no data was collected.
      */
@@ -92,7 +100,9 @@ public class VisorNodeDataCollectorTaskResult implements 
Serializable, LessNamin
             cachesEx.isEmpty() &&
             igfss.isEmpty() &&
             igfsEndpoints.isEmpty() &&
-            igfssEx.isEmpty();
+            igfssEx.isEmpty() &&
+            readyTopVers.isEmpty() &&
+            pendingExchanges.isEmpty();
     }
 
     /**
@@ -192,4 +202,23 @@ public class VisorNodeDataCollectorTaskResult implements 
Serializable, LessNamin
     public Map<UUID, Long> errorCounts() {
         return errCnts;
     }
+
+    /**
+     * @return Topology version of latest completed partition exchange from 
nodes.
+     */
+    public Map<UUID, VisorAffinityTopologyVersion> readyAffinityVersions() {
+        return readyTopVers;
+    }
+
+    /**
+     * @return Whether pending exchange future exists from nodes.
+     */
+    public Map<UUID, Boolean> pendingExchanges() {
+        return pendingExchanges;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorNodeDataCollectorTaskResult.class, this);
+    }
 }

Reply via email to