You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2014/10/24 18:39:49 UTC
[1/2] git commit: AMBARI-7946. Stale configs indicators disappearing
very long for clients if restarting service via API (aonishuk)
Repository: ambari
Updated Branches:
refs/heads/branch-1.7.0 8aefc79ec -> 995e0889b
refs/heads/trunk d4dcb54e7 -> 522744fc2
AMBARI-7946. Stale configs indicators disappearing very long for clients if restarting service via API (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/522744fc
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/522744fc
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/522744fc
Branch: refs/heads/trunk
Commit: 522744fc2f4f74d102488381cf0d6e9fd7ceb13a
Parents: d4dcb54
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Fri Oct 24 19:39:28 2014 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Fri Oct 24 19:39:28 2014 +0300
----------------------------------------------------------------------
.../ambari/server/agent/HeartBeatHandler.java | 8 ++-
.../server/agent/TestHeartbeatHandler.java | 68 ++++++++++++++++++++
2 files changed, 75 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/522744fc/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 7d1fe6e..e99e39f 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,13 @@ public class HeartBeatHandler {
scHost.updateActualConfigs(report.getConfigurationTags());
scHost.setRestartRequired(false);
}
-
+ // Necessary for resetting clients stale configs after starting service
+ if ((RoleCommand.INSTALL.toString().equals(report.getRoleCommand()) ||
+ (RoleCommand.CUSTOM_COMMAND.toString().equals(report.getRoleCommand()) &&
+ "INSTALL".equals(report.getCustomCommand()))) && svcComp.isClientComponent()){
+ scHost.updateActualConfigs(report.getConfigurationTags());
+ scHost.setRestartRequired(false);
+ }
if (RoleCommand.CUSTOM_COMMAND.toString().equals(report.getRoleCommand()) &&
!("START".equals(report.getCustomCommand()) ||
"STOP".equals(report.getCustomCommand()))) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/522744fc/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
index 8c975d6..6e78b1d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
@@ -272,6 +272,74 @@ public class TestHeartbeatHandler {
@Test
@SuppressWarnings("unchecked")
+ public void testRestartRequiredAfterInstallClient() throws Exception {
+ Cluster cluster = getDummyCluster();
+
+ @SuppressWarnings("serial")
+ Set<String> hostNames = new HashSet<String>(){{
+ add(DummyHostname1);
+ }};
+ clusters.mapHostsToCluster(hostNames, DummyCluster);
+ Service hdfs = cluster.addService(HDFS);
+ hdfs.persist();
+ hdfs.addServiceComponent(HDFS_CLIENT).persist();
+ hdfs.getServiceComponent(HDFS_CLIENT).addServiceComponentHost(DummyHostname1).persist();
+
+ ActionQueue aq = new ActionQueue();
+
+ ServiceComponentHost serviceComponentHost = clusters.getCluster(DummyCluster).getService(HDFS).
+ getServiceComponent(HDFS_CLIENT).getServiceComponentHost(DummyHostname1);
+
+ serviceComponentHost.setState(State.INSTALLED);
+ serviceComponentHost.setRestartRequired(true);
+
+ HeartBeat hb = new HeartBeat();
+ hb.setResponseId(0);
+ hb.setNodeStatus(new HostStatus(Status.HEALTHY, DummyHostStatus));
+ hb.setHostname(DummyHostname1);
+
+
+ List<CommandReport> reports = new ArrayList<CommandReport>();
+ CommandReport cr = new CommandReport();
+ cr.setActionId(StageUtils.getActionId(requestId, stageId));
+ cr.setServiceName(HDFS);
+ cr.setRoleCommand("INSTALL");
+ cr.setCustomCommand("EXECUTION_COMMAND");
+ cr.setTaskId(1);
+ cr.setRole(HDFS_CLIENT);
+ cr.setStatus("COMPLETED");
+ cr.setStdErr("");
+ cr.setStdOut("");
+ cr.setExitCode(215);
+ cr.setClusterName(DummyCluster);
+ cr.setConfigurationTags(new HashMap<String, Map<String,String>>() {{
+ put("global", new HashMap<String,String>() {{ put("tag", "version1"); }});
+ }});
+ reports.add(cr);
+ hb.setReports(reports);
+
+ final HostRoleCommand command = new HostRoleCommand(DummyHostname1,
+ Role.DATANODE, null, null);
+
+ ActionManager am = getMockActionManager();
+ expect(am.getTasks(anyObject(List.class))).andReturn(
+ new ArrayList<HostRoleCommand>() {{
+ add(command);
+ add(command);
+ }});
+ replay(am);
+
+ HeartBeatHandler handler = getHeartBeatHandler(am, aq);
+ handler.handleHeartBeat(hb);
+
+ Assert.assertNotNull(serviceComponentHost.getActualConfigs());
+ Assert.assertFalse(serviceComponentHost.isRestartRequired());
+ Assert.assertEquals(serviceComponentHost.getActualConfigs().size(), 1);
+
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
public void testHeartbeatCustomCommandWithConfigs() throws Exception {
Cluster cluster = getDummyCluster();
[2/2] git commit: AMBARI-7946. Stale configs indicators disappearing
very long for clients if restarting service via API (aonishuk)
Posted by ao...@apache.org.
AMBARI-7946. Stale configs indicators disappearing very long for clients if restarting service via API (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/995e0889
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/995e0889
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/995e0889
Branch: refs/heads/branch-1.7.0
Commit: 995e0889bf2094d9855c60d26083457484acb42e
Parents: 8aefc79
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Fri Oct 24 19:39:31 2014 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Fri Oct 24 19:39:31 2014 +0300
----------------------------------------------------------------------
.../ambari/server/agent/HeartBeatHandler.java | 8 ++-
.../server/agent/TestHeartbeatHandler.java | 68 ++++++++++++++++++++
2 files changed, 75 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/995e0889/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 fa633c1..8a81b19 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
@@ -377,7 +377,13 @@ public class HeartBeatHandler {
scHost.updateActualConfigs(report.getConfigurationTags());
scHost.setRestartRequired(false);
}
-
+ // Necessary for resetting clients stale configs after starting service
+ if ((RoleCommand.INSTALL.toString().equals(report.getRoleCommand()) ||
+ (RoleCommand.CUSTOM_COMMAND.toString().equals(report.getRoleCommand()) &&
+ "INSTALL".equals(report.getCustomCommand()))) && svcComp.isClientComponent()){
+ scHost.updateActualConfigs(report.getConfigurationTags());
+ scHost.setRestartRequired(false);
+ }
if (RoleCommand.CUSTOM_COMMAND.toString().equals(report.getRoleCommand()) &&
!("START".equals(report.getCustomCommand()) ||
"STOP".equals(report.getCustomCommand()))) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/995e0889/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
index 8c975d6..6e78b1d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
@@ -272,6 +272,74 @@ public class TestHeartbeatHandler {
@Test
@SuppressWarnings("unchecked")
+ public void testRestartRequiredAfterInstallClient() throws Exception {
+ Cluster cluster = getDummyCluster();
+
+ @SuppressWarnings("serial")
+ Set<String> hostNames = new HashSet<String>(){{
+ add(DummyHostname1);
+ }};
+ clusters.mapHostsToCluster(hostNames, DummyCluster);
+ Service hdfs = cluster.addService(HDFS);
+ hdfs.persist();
+ hdfs.addServiceComponent(HDFS_CLIENT).persist();
+ hdfs.getServiceComponent(HDFS_CLIENT).addServiceComponentHost(DummyHostname1).persist();
+
+ ActionQueue aq = new ActionQueue();
+
+ ServiceComponentHost serviceComponentHost = clusters.getCluster(DummyCluster).getService(HDFS).
+ getServiceComponent(HDFS_CLIENT).getServiceComponentHost(DummyHostname1);
+
+ serviceComponentHost.setState(State.INSTALLED);
+ serviceComponentHost.setRestartRequired(true);
+
+ HeartBeat hb = new HeartBeat();
+ hb.setResponseId(0);
+ hb.setNodeStatus(new HostStatus(Status.HEALTHY, DummyHostStatus));
+ hb.setHostname(DummyHostname1);
+
+
+ List<CommandReport> reports = new ArrayList<CommandReport>();
+ CommandReport cr = new CommandReport();
+ cr.setActionId(StageUtils.getActionId(requestId, stageId));
+ cr.setServiceName(HDFS);
+ cr.setRoleCommand("INSTALL");
+ cr.setCustomCommand("EXECUTION_COMMAND");
+ cr.setTaskId(1);
+ cr.setRole(HDFS_CLIENT);
+ cr.setStatus("COMPLETED");
+ cr.setStdErr("");
+ cr.setStdOut("");
+ cr.setExitCode(215);
+ cr.setClusterName(DummyCluster);
+ cr.setConfigurationTags(new HashMap<String, Map<String,String>>() {{
+ put("global", new HashMap<String,String>() {{ put("tag", "version1"); }});
+ }});
+ reports.add(cr);
+ hb.setReports(reports);
+
+ final HostRoleCommand command = new HostRoleCommand(DummyHostname1,
+ Role.DATANODE, null, null);
+
+ ActionManager am = getMockActionManager();
+ expect(am.getTasks(anyObject(List.class))).andReturn(
+ new ArrayList<HostRoleCommand>() {{
+ add(command);
+ add(command);
+ }});
+ replay(am);
+
+ HeartBeatHandler handler = getHeartBeatHandler(am, aq);
+ handler.handleHeartBeat(hb);
+
+ Assert.assertNotNull(serviceComponentHost.getActualConfigs());
+ Assert.assertFalse(serviceComponentHost.isRestartRequired());
+ Assert.assertEquals(serviceComponentHost.getActualConfigs().size(), 1);
+
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
public void testHeartbeatCustomCommandWithConfigs() throws Exception {
Cluster cluster = getDummyCluster();