You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by as...@apache.org on 2015/12/23 00:51:25 UTC
[26/50] [abbrv] hadoop git commit: YARN-3226. UI changes for
decommissioning node. Contributed by Sunil G.
YARN-3226. UI changes for decommissioning node. Contributed by Sunil G.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/1de56b04
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/1de56b04
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/1de56b04
Branch: refs/heads/yarn-2877
Commit: 1de56b0448d332717c8316c621b4f6af542a85cc
Parents: 5cb1e01
Author: Junping Du <ju...@apache.org>
Authored: Thu Dec 17 15:19:48 2015 -0800
Committer: Junping Du <ju...@apache.org>
Committed: Thu Dec 17 15:20:17 2015 -0800
----------------------------------------------------------------------
hadoop-yarn-project/CHANGES.txt | 3 +
.../server/resourcemanager/ClusterMetrics.java | 20 ++++-
.../resourcemanager/rmnode/RMNodeImpl.java | 48 ++++++++---
.../webapp/MetricsOverviewTable.java | 30 +++++--
.../resourcemanager/webapp/NodesPage.java | 3 +
.../webapp/dao/ClusterMetricsInfo.java | 6 ++
.../resourcemanager/TestRMNodeTransitions.java | 89 ++++++++++++++++----
.../resourcemanager/webapp/TestNodesPage.java | 2 +-
.../webapp/TestRMWebServices.java | 2 +-
9 files changed, 161 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1de56b04/hadoop-yarn-project/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index 8d372ca..f5a559b 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -280,6 +280,9 @@ Release 2.8.0 - UNRELEASED
YARN-3623. Add a new config to indicate the Timeline Service version.
(Xuan Gong via junping_du)
+ YARN-3226. UI changes for decommissioning node. (Sunil G via
+ junping_du)
+
IMPROVEMENTS
YARN-644. Basic null check is not performed on passed in arguments before
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1de56b04/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClusterMetrics.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClusterMetrics.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClusterMetrics.java
index 1114dc0..5917b99 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClusterMetrics.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClusterMetrics.java
@@ -40,6 +40,7 @@ public class ClusterMetrics {
private static AtomicBoolean isInitialized = new AtomicBoolean(false);
@Metric("# of active NMs") MutableGaugeInt numActiveNMs;
+ @Metric("# of decommissioning NMs") MutableGaugeInt numDecommissioningNMs;
@Metric("# of decommissioned NMs") MutableGaugeInt numDecommissionedNMs;
@Metric("# of lost NMs") MutableGaugeInt numLostNMs;
@Metric("# of unhealthy NMs") MutableGaugeInt numUnhealthyNMs;
@@ -86,7 +87,24 @@ public class ClusterMetrics {
public int getNumActiveNMs() {
return numActiveNMs.value();
}
-
+
+ // Decommissioning NMs
+ public int getNumDecommissioningNMs() {
+ return numDecommissioningNMs.value();
+ }
+
+ public void incrDecommissioningNMs() {
+ numDecommissioningNMs.incr();
+ }
+
+ public void setDecommissioningNMs(int num) {
+ numDecommissioningNMs.set(num);
+ }
+
+ public void decrDecommissioningNMs() {
+ numDecommissioningNMs.decr();
+ }
+
//Decommisioned NMs
public int getNumDecommisionedNMs() {
return numDecommissionedNMs.value();
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1de56b04/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java
index 27fdfa7..8448287 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java
@@ -647,13 +647,34 @@ public class RMNodeImpl implements RMNode, EventHandler<RMNodeEvent> {
}
}
- // Treats nodes in decommissioning as active nodes
- // TODO we may want to differentiate active nodes and decommissioning node in
- // metrics later.
- private void updateMetricsForGracefulDecommissionOnUnhealthyNode() {
+ // Update metrics when moving to Decommissioning state
+ private void updateMetricsForGracefulDecommission(NodeState initialState,
+ NodeState finalState) {
ClusterMetrics metrics = ClusterMetrics.getMetrics();
- metrics.incrNumActiveNodes();
- metrics.decrNumUnhealthyNMs();
+ switch (initialState) {
+ case UNHEALTHY :
+ metrics.decrNumUnhealthyNMs();
+ break;
+ case RUNNING :
+ metrics.decrNumActiveNodes();
+ break;
+ case DECOMMISSIONING :
+ metrics.decrDecommissioningNMs();
+ break;
+ default :
+ LOG.warn("Unexpcted initial state");
+ }
+
+ switch (finalState) {
+ case DECOMMISSIONING :
+ metrics.incrDecommissioningNMs();
+ break;
+ case RUNNING :
+ metrics.incrNumActiveNodes();
+ break;
+ default :
+ LOG.warn("Unexpected final state");
+ }
}
private void updateMetricsForDeactivatedNode(NodeState initialState,
@@ -665,18 +686,18 @@ public class RMNodeImpl implements RMNode, EventHandler<RMNodeEvent> {
metrics.decrNumActiveNodes();
break;
case DECOMMISSIONING:
- metrics.decrNumActiveNodes();
+ metrics.decrDecommissioningNMs();
break;
case UNHEALTHY:
metrics.decrNumUnhealthyNMs();
break;
default:
- LOG.debug("Unexpected inital state");
+ LOG.warn("Unexpected initial state");
}
switch (finalState) {
case DECOMMISSIONED:
- metrics.incrDecommisionedNMs();
+ metrics.incrDecommisionedNMs();
break;
case LOST:
metrics.incrNumLostNMs();
@@ -691,7 +712,7 @@ public class RMNodeImpl implements RMNode, EventHandler<RMNodeEvent> {
metrics.incrNumShutdownNMs();
break;
default:
- LOG.debug("Unexpected final state");
+ LOG.warn("Unexpected final state");
}
}
@@ -1014,9 +1035,8 @@ public class RMNodeImpl implements RMNode, EventHandler<RMNodeEvent> {
@Override
public void transition(RMNodeImpl rmNode, RMNodeEvent event) {
LOG.info("Put Node " + rmNode.nodeId + " in DECOMMISSIONING.");
- if (initState.equals(NodeState.UNHEALTHY)) {
- rmNode.updateMetricsForGracefulDecommissionOnUnhealthyNode();
- }
+ // Update NM metrics during graceful decommissioning.
+ rmNode.updateMetricsForGracefulDecommission(initState, finalState);
// TODO (in YARN-3223) Keep NM's available resource to be 0
}
}
@@ -1033,6 +1053,8 @@ public class RMNodeImpl implements RMNode, EventHandler<RMNodeEvent> {
public void transition(RMNodeImpl rmNode, RMNodeEvent event) {
LOG.info("Node " + rmNode.nodeId + " in DECOMMISSIONING is " +
"recommissioned back to RUNNING.");
+ rmNode
+ .updateMetricsForGracefulDecommission(rmNode.getState(), finalState);
// TODO handle NM resource resume in YARN-3223.
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1de56b04/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/MetricsOverviewTable.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/MetricsOverviewTable.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/MetricsOverviewTable.java
index f59d5ed..fe7b247 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/MetricsOverviewTable.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/MetricsOverviewTable.java
@@ -53,8 +53,7 @@ public class MetricsOverviewTable extends HtmlBlock {
//CSS in the correct spot
html.style(".metrics {margin-bottom:5px}");
- ClusterMetricsInfo clusterMetrics =
- new ClusterMetricsInfo(this.rm);
+ ClusterMetricsInfo clusterMetrics = new ClusterMetricsInfo(this.rm);
DIV<Hamlet> div = html.div().$class("metrics");
@@ -73,12 +72,6 @@ public class MetricsOverviewTable extends HtmlBlock {
th().$class("ui-state-default")._("VCores Used")._().
th().$class("ui-state-default")._("VCores Total")._().
th().$class("ui-state-default")._("VCores Reserved")._().
- th().$class("ui-state-default")._("Active Nodes")._().
- th().$class("ui-state-default")._("Decommissioned Nodes")._().
- th().$class("ui-state-default")._("Lost Nodes")._().
- th().$class("ui-state-default")._("Unhealthy Nodes")._().
- th().$class("ui-state-default")._("Rebooted Nodes")._().
- th().$class("ui-state-default")._("Shutdown Nodes")._().
_().
_().
tbody().$class("ui-widget-content").
@@ -99,7 +92,26 @@ public class MetricsOverviewTable extends HtmlBlock {
td(String.valueOf(clusterMetrics.getAllocatedVirtualCores())).
td(String.valueOf(clusterMetrics.getTotalVirtualCores())).
td(String.valueOf(clusterMetrics.getReservedVirtualCores())).
+ _().
+ _()._();
+
+ div.h3("Cluster Nodes Metrics").
+ table("#nodemetricsoverview").
+ thead().$class("ui-widget-header").
+ tr().
+ th().$class("ui-state-default")._("Active Nodes")._().
+ th().$class("ui-state-default")._("Decommissioning Nodes")._().
+ th().$class("ui-state-default")._("Decommissioned Nodes")._().
+ th().$class("ui-state-default")._("Lost Nodes")._().
+ th().$class("ui-state-default")._("Unhealthy Nodes")._().
+ th().$class("ui-state-default")._("Rebooted Nodes")._().
+ th().$class("ui-state-default")._("Shutdown Nodes")._().
+ _().
+ _().
+ tbody().$class("ui-widget-content").
+ tr().
td().a(url("nodes"),String.valueOf(clusterMetrics.getActiveNodes()))._().
+ td().a(url("nodes/decommissioning"), String.valueOf(clusterMetrics.getDecommissioningNodes()))._().
td().a(url("nodes/decommissioned"),String.valueOf(clusterMetrics.getDecommissionedNodes()))._().
td().a(url("nodes/lost"),String.valueOf(clusterMetrics.getLostNodes()))._().
td().a(url("nodes/unhealthy"),String.valueOf(clusterMetrics.getUnhealthyNodes()))._().
@@ -107,7 +119,7 @@ public class MetricsOverviewTable extends HtmlBlock {
td().a(url("nodes/shutdown"),String.valueOf(clusterMetrics.getShutdownNodes()))._().
_().
_()._();
-
+
String user = request().getRemoteUser();
if (user != null) {
UserMetricsInfo userMetrics = new UserMetricsInfo(this.rm, user);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1de56b04/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.java
index 4214667..9603468 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.java
@@ -94,6 +94,9 @@ class NodesPage extends RmView {
rmNodes = this.rm.getRMContext().getInactiveRMNodes().values();
isInactive = true;
break;
+ case DECOMMISSIONING:
+ // Do nothing
+ break;
default:
LOG.debug("Unexpected state filter for inactive RM node");
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1de56b04/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java
index 5ebae41..3012d0d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java
@@ -54,6 +54,7 @@ public class ClusterMetricsInfo {
protected int totalNodes;
protected int lostNodes;
protected int unhealthyNodes;
+ protected int decommissioningNodes;
protected int decommissionedNodes;
protected int rebootedNodes;
protected int activeNodes;
@@ -91,6 +92,7 @@ public class ClusterMetricsInfo {
this.activeNodes = clusterMetrics.getNumActiveNMs();
this.lostNodes = clusterMetrics.getNumLostNMs();
this.unhealthyNodes = clusterMetrics.getUnhealthyNMs();
+ this.decommissioningNodes = clusterMetrics.getNumDecommissioningNMs();
this.decommissionedNodes = clusterMetrics.getNumDecommisionedNMs();
this.rebootedNodes = clusterMetrics.getNumRebootedNMs();
this.shutdownNodes = clusterMetrics.getNumShutdownNMs();
@@ -186,6 +188,10 @@ public class ClusterMetricsInfo {
return this.unhealthyNodes;
}
+ public int getDecommissioningNodes() {
+ return this.decommissioningNodes;
+ }
+
public int getDecommissionedNodes() {
return this.decommissionedNodes;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1de56b04/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMNodeTransitions.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMNodeTransitions.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMNodeTransitions.java
index 33a077d..d1c9f6e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMNodeTransitions.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMNodeTransitions.java
@@ -236,29 +236,49 @@ public class TestRMNodeTransitions {
}
@Test
- public void testStatusUpdateOnDecommissioningNode(){
+ public void testStatusUpdateOnDecommissioningNode() {
RMNodeImpl node = getDecommissioningNode();
+ ClusterMetrics cm = ClusterMetrics.getMetrics();
+ int initialActive = cm.getNumActiveNMs();
+ int initialDecommissioning = cm.getNumDecommissioningNMs();
+ int initialDecommissioned = cm.getNumDecommisionedNMs();
Assert.assertEquals(NodeState.DECOMMISSIONING, node.getState());
// Verify node in DECOMMISSIONING won't be changed by status update
// with running apps
RMNodeStatusEvent statusEvent = getMockRMNodeStatusEventWithRunningApps();
node.handle(statusEvent);
Assert.assertEquals(NodeState.DECOMMISSIONING, node.getState());
+ Assert.assertEquals("Active Nodes", initialActive, cm.getNumActiveNMs());
+ Assert.assertEquals("Decommissioning Nodes", initialDecommissioning,
+ cm.getNumDecommissioningNMs());
+ Assert.assertEquals("Decommissioned Nodes", initialDecommissioned,
+ cm.getNumDecommisionedNMs());
// Verify node in DECOMMISSIONING will be changed by status update
// without running apps
statusEvent = getMockRMNodeStatusEventWithoutRunningApps();
node.handle(statusEvent);
Assert.assertEquals(NodeState.DECOMMISSIONED, node.getState());
+ Assert.assertEquals("Active Nodes", initialActive, cm.getNumActiveNMs());
+ Assert.assertEquals("Decommissioning Nodes", initialDecommissioning - 1,
+ cm.getNumDecommissioningNMs());
+ Assert.assertEquals("Decommissioned Nodes", initialDecommissioned + 1,
+ cm.getNumDecommisionedNMs());
}
@Test
- public void testRecommissionNode(){
+ public void testRecommissionNode() {
RMNodeImpl node = getDecommissioningNode();
Assert.assertEquals(NodeState.DECOMMISSIONING, node.getState());
- node.handle(new RMNodeEvent(node.getNodeID(),
- RMNodeEventType.RECOMMISSION));
+ ClusterMetrics cm = ClusterMetrics.getMetrics();
+ int initialActive = cm.getNumActiveNMs();
+ int initialDecommissioning = cm.getNumDecommissioningNMs();
+ node.handle(new RMNodeEvent(node.getNodeID(), RMNodeEventType.RECOMMISSION));
Assert.assertEquals(NodeState.RUNNING, node.getState());
+ Assert
+ .assertEquals("Active Nodes", initialActive + 1, cm.getNumActiveNMs());
+ Assert.assertEquals("Decommissioning Nodes", initialDecommissioning - 1,
+ cm.getNumDecommissioningNMs());
}
@Test (timeout = 5000)
@@ -481,16 +501,18 @@ public class TestRMNodeTransitions {
int initialUnhealthy = cm.getUnhealthyNMs();
int initialDecommissioned = cm.getNumDecommisionedNMs();
int initialRebooted = cm.getNumRebootedNMs();
- node.handle(new RMNodeEvent(node.getNodeID(),
- RMNodeEventType.DECOMMISSION));
- Assert.assertEquals("Active Nodes", initialActive - 1, cm.getNumActiveNMs());
+ int initialDecommissioning = cm.getNumDecommissioningNMs();
+ node.handle(new RMNodeEvent(node.getNodeID(), RMNodeEventType.DECOMMISSION));
+ Assert.assertEquals("Active Nodes", initialActive, cm.getNumActiveNMs());
Assert.assertEquals("Lost Nodes", initialLost, cm.getNumLostNMs());
- Assert.assertEquals("Unhealthy Nodes",
- initialUnhealthy, cm.getUnhealthyNMs());
- Assert.assertEquals("Decommissioned Nodes",
- initialDecommissioned + 1, cm.getNumDecommisionedNMs());
- Assert.assertEquals("Rebooted Nodes",
- initialRebooted, cm.getNumRebootedNMs());
+ Assert.assertEquals("Unhealthy Nodes", initialUnhealthy,
+ cm.getUnhealthyNMs());
+ Assert.assertEquals("Decommissioning Nodes", initialDecommissioning - 1,
+ cm.getNumDecommissioningNMs());
+ Assert.assertEquals("Decommissioned Nodes", initialDecommissioned + 1,
+ cm.getNumDecommisionedNMs());
+ Assert.assertEquals("Rebooted Nodes", initialRebooted,
+ cm.getNumRebootedNMs());
Assert.assertEquals(NodeState.DECOMMISSIONED, node.getState());
}
@@ -525,16 +547,19 @@ public class TestRMNodeTransitions {
int initialLost = cm.getNumLostNMs();
int initialUnhealthy = cm.getUnhealthyNMs();
int initialDecommissioned = cm.getNumDecommisionedNMs();
+ int initialDecommissioning = cm.getNumDecommissioningNMs();
int initialRebooted = cm.getNumRebootedNMs();
node.handle(new RMNodeEvent(node.getNodeID(),
RMNodeEventType.GRACEFUL_DECOMMISSION));
- Assert.assertEquals("Active Nodes", initialActive + 1,
+ Assert.assertEquals("Active Nodes", initialActive,
cm.getNumActiveNMs());
Assert.assertEquals("Lost Nodes", initialLost, cm.getNumLostNMs());
Assert.assertEquals("Unhealthy Nodes",
initialUnhealthy - 1, cm.getUnhealthyNMs());
Assert.assertEquals("Decommissioned Nodes", initialDecommissioned,
cm.getNumDecommisionedNMs());
+ Assert.assertEquals("Decommissioning Nodes", initialDecommissioning + 1,
+ cm.getNumDecommissioningNMs());
Assert.assertEquals("Rebooted Nodes",
initialRebooted, cm.getNumRebootedNMs());
Assert.assertEquals(NodeState.DECOMMISSIONING, node.getState());
@@ -681,9 +706,16 @@ public class TestRMNodeTransitions {
private RMNodeImpl getDecommissioningNode() {
RMNodeImpl node = getRunningNode();
+ ClusterMetrics cm = ClusterMetrics.getMetrics();
+ int initialActive = cm.getNumActiveNMs();
+ int initialDecommissioning = cm.getNumDecommissioningNMs();
node.handle(new RMNodeEvent(node.getNodeID(),
RMNodeEventType.GRACEFUL_DECOMMISSION));
Assert.assertEquals(NodeState.DECOMMISSIONING, node.getState());
+ Assert
+ .assertEquals("Active Nodes", initialActive - 1, cm.getNumActiveNMs());
+ Assert.assertEquals("Decommissioning Nodes", initialDecommissioning + 1,
+ cm.getNumDecommissioningNMs());
return node;
}
@@ -774,16 +806,30 @@ public class TestRMNodeTransitions {
@Test
public void testReconnectOnDecommissioningNode() {
RMNodeImpl node = getDecommissioningNode();
+ ClusterMetrics cm = ClusterMetrics.getMetrics();
+ int initialActive = cm.getNumActiveNMs();
+ int initialDecommissioning = cm.getNumDecommissioningNMs();
+ int initialDecommissioned = cm.getNumDecommisionedNMs();
// Reconnect event with running app
node.handle(new RMNodeReconnectEvent(node.getNodeID(), node,
getAppIdList(), null));
// still decommissioning
Assert.assertEquals(NodeState.DECOMMISSIONING, node.getState());
+ Assert.assertEquals("Active Nodes", initialActive, cm.getNumActiveNMs());
+ Assert.assertEquals("Decommissioning Nodes", initialDecommissioning,
+ cm.getNumDecommissioningNMs());
+ Assert.assertEquals("Decommissioned Nodes", initialDecommissioned,
+ cm.getNumDecommisionedNMs());
// Reconnect event without any running app
node.handle(new RMNodeReconnectEvent(node.getNodeID(), node, null, null));
Assert.assertEquals(NodeState.DECOMMISSIONED, node.getState());
+ Assert.assertEquals("Active Nodes", initialActive, cm.getNumActiveNMs());
+ Assert.assertEquals("Decommissioning Nodes", initialDecommissioning - 1,
+ cm.getNumDecommissioningNMs());
+ Assert.assertEquals("Decommissioned Nodes", initialDecommissioned + 1,
+ cm.getNumDecommisionedNMs());
}
@Test
@@ -846,17 +892,26 @@ public class TestRMNodeTransitions {
@Test
public void testResourceUpdateOnRebootedNode() {
RMNodeImpl node = getRebootedNode();
+ ClusterMetrics cm = ClusterMetrics.getMetrics();
+ int initialActive = cm.getNumActiveNMs();
+ int initialUnHealthy = cm.getUnhealthyNMs();
+ int initialDecommissioning = cm.getNumDecommissioningNMs();
Resource oldCapacity = node.getTotalCapability();
assertEquals("Memory resource is not match.", oldCapacity.getMemory(), 4096);
assertEquals("CPU resource is not match.", oldCapacity.getVirtualCores(), 4);
- node.handle(new RMNodeResourceUpdateEvent(node.getNodeID(),
- ResourceOption.newInstance(Resource.newInstance(2048, 2),
+ node.handle(new RMNodeResourceUpdateEvent(node.getNodeID(), ResourceOption
+ .newInstance(Resource.newInstance(2048, 2),
ResourceOption.OVER_COMMIT_TIMEOUT_MILLIS_DEFAULT)));
Resource newCapacity = node.getTotalCapability();
assertEquals("Memory resource is not match.", newCapacity.getMemory(), 2048);
assertEquals("CPU resource is not match.", newCapacity.getVirtualCores(), 2);
-
+
Assert.assertEquals(NodeState.REBOOTED, node.getState());
+ Assert.assertEquals("Active Nodes", initialActive, cm.getNumActiveNMs());
+ Assert.assertEquals("Unhelathy Nodes", initialUnHealthy,
+ cm.getUnhealthyNMs());
+ Assert.assertEquals("Decommissioning Nodes", initialDecommissioning,
+ cm.getNumDecommissioningNMs());
}
// Test unhealthy report on a decommissioning node will make it
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1de56b04/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java
index 458b240..0699c0e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java
@@ -47,7 +47,7 @@ public class TestNodesPage {
// Number of Actual Table Headers for NodesPage.NodesBlock might change in
// future. In that case this value should be adjusted to the new value.
- final int numberOfThInMetricsTable = 22;
+ final int numberOfThInMetricsTable = 23;
final int numberOfActualTableHeaders = 13;
private Injector injector;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1de56b04/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java
index 530c06f..c329629 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java
@@ -429,7 +429,7 @@ public class TestRMWebServices extends JerseyTestBase {
Exception {
assertEquals("incorrect number of elements", 1, json.length());
JSONObject clusterinfo = json.getJSONObject("clusterMetrics");
- assertEquals("incorrect number of elements", 24, clusterinfo.length());
+ assertEquals("incorrect number of elements", 25, clusterinfo.length());
verifyClusterMetrics(
clusterinfo.getInt("appsSubmitted"), clusterinfo.getInt("appsCompleted"),
clusterinfo.getInt("reservedMB"), clusterinfo.getInt("availableMB"),