You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mp...@apache.org on 2014/05/30 16:39:00 UTC
[2/2] git commit: AMBARI-5935. Maintenance state and status commands
perf improvements. (mpapirkovskyy)
AMBARI-5935. Maintenance state and status commands perf improvements. (mpapirkovskyy)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1b038795
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1b038795
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1b038795
Branch: refs/heads/trunk
Commit: 1b038795381cae1a796d4904422e9bd622b3aa80
Parents: 1a59711
Author: Myroslav Papirkovskyy <mp...@hortonworks.com>
Authored: Thu May 29 18:14:11 2014 +0300
Committer: Myroslav Papirkovskyy <mp...@hortonworks.com>
Committed: Fri May 30 17:39:02 2014 +0300
----------------------------------------------------------------------
.../apache/ambari/server/agent/HeartBeatHandler.java | 2 +-
.../apache/ambari/server/agent/HeartbeatMonitor.java | 12 ++++++++++--
.../server/controller/MaintenanceStateHelper.java | 6 +-----
.../ambari/server/agent/TestHeartbeatMonitor.java | 14 ++++++++++++++
.../server/controller/MaintenanceStateHelperTest.java | 6 +-----
5 files changed, 27 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/1b038795/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
index c376bcd..364cdaa 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
@@ -417,7 +417,7 @@ public class HeartBeatHandler {
|| prevState.equals(State.STARTING)
|| prevState.equals(State.STOPPING)
|| prevState.equals(State.UNKNOWN)) {
- scHost.setState(liveState);
+ scHost.setState(liveState); //TODO direct status set breaks state machine sometimes !!!
if (!prevState.equals(liveState)) {
LOG.info("State of service component " + componentName
+ " of service " + status.getServiceName()
http://git-wip-us.apache.org/repos/asf/ambari/blob/1b038795/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java
index 2dddd20..5fa4062 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java
@@ -181,8 +181,16 @@ public class HeartbeatMonitor implements Runnable {
for (Cluster cl : clusters.getClustersForHost(hostname)) {
for (ServiceComponentHost sch : cl.getServiceComponentHosts(hostname)) {
- StatusCommand statusCmd = createStatusCommand(hostname, cl, sch);
- cmds.add(statusCmd);
+ switch (sch.getState()) {
+ case INIT:
+ case INSTALLING:
+ //don't send commands until component is installed at least
+ continue;
+ default:
+ StatusCommand statusCmd = createStatusCommand(hostname, cl, sch);
+ cmds.add(statusCmd);
+ }
+
}
}
return cmds;
http://git-wip-us.apache.org/repos/asf/ambari/blob/1b038795/ambari-server/src/main/java/org/apache/ambari/server/controller/MaintenanceStateHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/MaintenanceStateHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/MaintenanceStateHelper.java
index 3e4b149..191c647 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/MaintenanceStateHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/MaintenanceStateHelper.java
@@ -85,11 +85,7 @@ public class MaintenanceStateHelper {
public MaintenanceState getEffectiveState(ServiceComponentHost sch) throws AmbariException {
Cluster cluster = clusters.getCluster(sch.getClusterName());
- Map<String, Host> map = clusters.getHostsForCluster(cluster.getClusterName());
- if (null == map)
- return MaintenanceState.OFF;
-
- Host host = map.get(sch.getHostName());
+ Host host = clusters.getHost(sch.getHostName());
return getEffectiveState(sch, host);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/1b038795/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
index 79d0e7e..a5e4294 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
@@ -136,6 +136,10 @@ public class TestHeartbeatMonitor {
hdfs.addServiceComponent(Role.SECONDARY_NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).addServiceComponentHost(hostname1).persist();
+ hdfs.getServiceComponent(Role.DATANODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+ hdfs.getServiceComponent(Role.NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+ hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+
ActionQueue aq = new ActionQueue();
ActionManager am = mock(ActionManager.class);
HeartbeatMonitor hm = new HeartbeatMonitor(clusters, aq, am,
@@ -223,6 +227,12 @@ public class TestHeartbeatMonitor {
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).addServiceComponentHost
(hostname2).persist();
+ hdfs.getServiceComponent(Role.DATANODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+ hdfs.getServiceComponent(Role.NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+ hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+ hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+ hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).getServiceComponentHost(hostname2).setState(State.INSTALLED);
+
ActionQueue aq = new ActionQueue();
ActionManager am = mock(ActionManager.class);
HeartbeatMonitor hm = new HeartbeatMonitor(clusters, aq, am,
@@ -301,6 +311,10 @@ public class TestHeartbeatMonitor {
hdfs.addServiceComponent(Role.SECONDARY_NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).addServiceComponentHost(hostname1).persist();
+ hdfs.getServiceComponent(Role.DATANODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+ hdfs.getServiceComponent(Role.NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+ hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
+
ActionQueue aqMock = mock(ActionQueue.class);
ArgumentCaptor<AgentCommand> commandCaptor=ArgumentCaptor.
forClass(AgentCommand.class);
http://git-wip-us.apache.org/repos/asf/ambari/blob/1b038795/ambari-server/src/test/java/org/apache/ambari/server/controller/MaintenanceStateHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/MaintenanceStateHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/MaintenanceStateHelperTest.java
index 5fc66a6..08ccc87 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/MaintenanceStateHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/MaintenanceStateHelperTest.java
@@ -248,11 +248,7 @@ public class MaintenanceStateHelperTest {
expect(clusters.getCluster("c1")).andReturn(cluster).anyTimes();
expect(cluster.getClusterName()).andReturn("c1").anyTimes();
expect(cluster.getClusterId()).andReturn(1L).anyTimes();
- expect(clusters.getHostsForCluster("c1")).andReturn(
- new HashMap<String, Host>() {{
- put("h1", host);
- }}
- ).anyTimes();
+ expect(clusters.getHost("h1")).andReturn(host).anyTimes();
expect(sch.getHostName()).andReturn("h1").anyTimes();
expect(sch.getServiceName()).andReturn("HDFS").anyTimes();
expect(cluster.getService("HDFS")).andReturn(service).anyTimes();