Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-406 c2234368e -> e74dfa68a


# ignite-337:  Return ClusterMetrics.totalNodes()


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

Branch: refs/heads/ignite-406
Commit: 472ef05159149d8c6c53a9b41ee473842fff641f
Parents: f053746
Author: Artem Shutak <ashu...@gridgain.com>
Authored: Fri Feb 27 19:18:32 2015 +0300
Committer: Artem Shutak <ashu...@gridgain.com>
Committed: Fri Feb 27 19:18:32 2015 +0300

----------------------------------------------------------------------
 .../apache/ignite/cluster/ClusterMetrics.java   | 66 +++++++++++---------
 .../ClusterLocalNodeMetricsMXBeanImpl.java      |  5 ++
 .../ignite/internal/ClusterMetricsSnapshot.java | 27 +++++++-
 .../mxbean/ClusterLocalNodeMetricsMXBean.java   |  4 ++
 4 files changed, 72 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/472ef051/modules/core/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java 
b/modules/core/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java
index c2b9a05..98820d2 100644
--- a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java
@@ -17,6 +17,9 @@
 
 package org.apache.ignite.cluster;
 
+import org.apache.ignite.*;
+import org.apache.ignite.configuration.*;
+
 /**
  * This class represents runtime information on a cluster. Apart from obvious
  * statistical value, this information is used for implementation of
@@ -24,10 +27,10 @@ package org.apache.ignite.cluster;
  * in combination with fail-over SPI could check if other nodes don't have
  * any active or waiting jobs and fail-over some jobs to those nodes.
  * <p>
- * Node metrics for any node can be accessed via {@link 
org.apache.ignite.cluster.ClusterNode#metrics()}
+ * Node metrics for any node can be accessed via {@link ClusterNode#metrics()}
  * method. Keep in mind that there will be a certain network delay (usually
  * equal to heartbeat delay) for the accuracy of node metrics. However, when 
accessing
- * metrics on local node {@link org.apache.ignite.IgniteCluster#localNode() 
Grid.localNode().getMetrics()}
+ * metrics on local node {@link IgniteCluster#localNode() 
Grid.localNode().getMetrics()}
  * the metrics are always accurate and up to date.
  * <p>
  * Local node metrics are registered as {@code MBean} and can be accessed from
@@ -52,8 +55,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Maximum number of jobs that ever ran concurrently on this node.
@@ -74,8 +77,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Average number of active jobs.
@@ -89,8 +92,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Maximum number of waiting jobs.
@@ -111,8 +114,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Average number of waiting jobs.
@@ -127,8 +130,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Maximum number of jobs rejected at once.
@@ -149,8 +152,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of grid configuration 
settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Average number of jobs this node rejects during collision 
resolution operations.
@@ -193,8 +196,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Average number of cancelled jobs.
@@ -228,8 +231,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Maximum waiting time.
@@ -250,8 +253,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Average job wait time.
@@ -265,8 +268,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Time it took to execute the longest job on the node.
@@ -287,8 +290,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Average job execution time.
@@ -302,8 +305,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Total number of jobs handled by the node.
@@ -382,8 +385,8 @@ public interface ClusterMetrics {
      * calculated over all the metrics kept in history. The
      * history size is set via either one or both of configuration settings:
      * <ul>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsExpireTime()}</li>
-     * <li>{@link 
org.apache.ignite.configuration.IgniteConfiguration#getMetricsHistorySize()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsExpireTime()}</li>
+     * <li>{@link IgniteConfiguration#getMetricsHistorySize()}</li>
      * </ul>
      *
      * @return Average of CPU load value in {@code [0, 1]} range over all 
metrics kept
@@ -674,4 +677,11 @@ public interface ClusterMetrics {
      * @return Outbound messages queue size.
      */
     public int getOutboundMessagesQueueSize();
+
+    /**
+     * Gets total number of nodes.
+     *
+     * @return Total number of nodes.
+     */
+    public int getTotalNodes();
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/472ef051/modules/core/src/main/java/org/apache/ignite/internal/ClusterLocalNodeMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/ClusterLocalNodeMetricsMXBeanImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/ClusterLocalNodeMetricsMXBeanImpl.java
index a4ddafd..67dc5e6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/ClusterLocalNodeMetricsMXBeanImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/ClusterLocalNodeMetricsMXBeanImpl.java
@@ -313,6 +313,11 @@ public class ClusterLocalNodeMetricsMXBeanImpl implements 
ClusterLocalNodeMetric
     }
 
     /** {@inheritDoc} */
+    @Override public int getTotalNodes() {
+        return node.metrics().getTotalNodes();
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(ClusterLocalNodeMetricsMXBeanImpl.class, this);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/472ef051/modules/core/src/main/java/org/apache/ignite/internal/ClusterMetricsSnapshot.java
----------------------------------------------------------------------
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 6e1e4c3..6e933ab 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
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal;
 
 import org.apache.ignite.cluster.*;
-import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.jetbrains.annotations.*;
@@ -86,7 +85,8 @@ public class ClusterMetricsSnapshot implements ClusterMetrics 
{
         8/*sent bytes count*/ +
         4/*received messages count*/ +
         8/*received bytes count*/ +
-        4/*outbound messages queue size*/;
+        4/*outbound messages queue size*/ + 
+        4/*total nodes*/;
 
     /** */
     private long lastUpdateTime = -1;
@@ -244,6 +244,9 @@ public class ClusterMetricsSnapshot implements 
ClusterMetrics {
     /** */
     private int outMesQueueSize = -1;
 
+    /** */
+    private int totalNodes = -1;
+
     /**
      * Create empty snapshot.
      */
@@ -315,6 +318,7 @@ public class ClusterMetricsSnapshot implements 
ClusterMetrics {
         rcvdBytesCnt = 0;
         outMesQueueSize = 0;
         heapTotal = 0;
+        totalNodes = nodes.size();
 
         for (ClusterNode node : nodes) {
             ClusterMetrics m = node.metrics();
@@ -926,6 +930,11 @@ public class ClusterMetricsSnapshot implements 
ClusterMetrics {
         return outMesQueueSize;
     }
 
+    /** {@inheritDoc} */
+    @Override public int getTotalNodes() {
+        return totalNodes;
+    }
+
     /**
      * Sets available processors.
      *
@@ -1152,6 +1161,15 @@ public class ClusterMetricsSnapshot implements 
ClusterMetrics {
     }
 
     /**
+     * Sets total number of nodes.
+     *
+     * @param totalNodes Total number of nodes.
+     */
+    public void setTotalNodes(int totalNodes) {
+        this.totalNodes = totalNodes;
+    }
+
+    /**
      * @param neighborhood Cluster neighborhood.
      * @return CPU count.
      */
@@ -1287,6 +1305,7 @@ public class ClusterMetricsSnapshot implements 
ClusterMetrics {
         off = U.intToBytes(metrics.getReceivedMessagesCount(), data, off);
         off = U.longToBytes(metrics.getReceivedBytesCount(), data, off);
         off = U.intToBytes(metrics.getOutboundMessagesQueueSize(), data, off);
+        off = U.intToBytes(metrics.getTotalNodes(), data, off);
 
         assert off - start == METRICS_SIZE : "Invalid metrics size [expected=" 
+ METRICS_SIZE + ", actual=" +
                 (off - start) + ']';
@@ -1512,6 +1531,10 @@ public class ClusterMetricsSnapshot implements 
ClusterMetrics {
 
         off += 4;
 
+        metrics.setTotalNodes(U.bytesToInt(data, off));
+
+        off += 4;
+
         assert off - start == METRICS_SIZE : "Invalid metrics size [expected=" 
+ METRICS_SIZE + ", actual=" +
                 (off - start) + ']';
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/472ef051/modules/core/src/main/java/org/apache/ignite/mxbean/ClusterLocalNodeMetricsMXBean.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/mxbean/ClusterLocalNodeMetricsMXBean.java
 
b/modules/core/src/main/java/org/apache/ignite/mxbean/ClusterLocalNodeMetricsMXBean.java
index 7a5b93a..a3c946d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/mxbean/ClusterLocalNodeMetricsMXBean.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/mxbean/ClusterLocalNodeMetricsMXBean.java
@@ -246,4 +246,8 @@ public interface ClusterLocalNodeMetricsMXBean extends 
ClusterMetrics {
     /** {@inheritDoc} */
     @MXBeanDescription("Start time of the grid node in milliseconds.")
     public long getNodeStartTime();
+
+    /** {@inheritDoc} */
+    @MXBeanDescription("Total number of nodes.")
+    public int getTotalNodes();
 }

Reply via email to