You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ds...@apache.org on 2017/07/27 17:15:28 UTC
ambari git commit: AMBARI-21587 Don't set restart indicators for
NN/RM during DN/NM deletion (dsen)
Repository: ambari
Updated Branches:
refs/heads/trunk 218829f93 -> ad593b4ed
AMBARI-21587 Don't set restart indicators for NN/RM during DN/NM deletion (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ad593b4e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ad593b4e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ad593b4e
Branch: refs/heads/trunk
Commit: ad593b4edba46f75e8b8c0afd8856abc7005aedc
Parents: 218829f
Author: Dmytro Sen <ds...@apache.org>
Authored: Thu Jul 27 20:15:02 2017 +0300
Committer: Dmytro Sen <ds...@apache.org>
Committed: Thu Jul 27 20:15:15 2017 +0300
----------------------------------------------------------------------
.../AmbariManagementControllerImpl.java | 38 ++---------
.../AmbariManagementControllerTest.java | 69 ++++++++++++++++++++
2 files changed, 73 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad593b4e/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 4c20f62..3016027 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -160,7 +160,6 @@ import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.DesiredConfig;
import org.apache.ambari.server.state.ExtensionInfo;
import org.apache.ambari.server.state.Host;
-import org.apache.ambari.server.state.HostComponentAdminState;
import org.apache.ambari.server.state.HostState;
import org.apache.ambari.server.state.MaintenanceState;
import org.apache.ambari.server.state.OperatingSystemInfo;
@@ -3623,8 +3622,9 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
for (Entry<ServiceComponent, Set<ServiceComponentHost>> entry : safeToRemoveSCHs.entrySet()) {
for (ServiceComponentHost componentHost : entry.getValue()) {
try {
- deleteHostComponent(entry.getKey(), componentHost);
- deleteStatusMetaData.addDeletedKey(componentHost.getHostName() + "/" + componentHost.getServiceComponentName());
+ //actually delete the component
+ entry.getKey().deleteServiceComponentHosts(componentHost.getHostName());
+
//create cluster-master-service map to update all include/exclude files in one action
String componentName = componentHost.getServiceComponentName();
if (masterToSlaveMappingForDecom.containsValue(componentName)) {
@@ -3649,6 +3649,7 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
clusterMasterSlaveHostsMap.put(componentHost.getClusterName(), masterSlaveHostsMap);
}
}
+ deleteStatusMetaData.addDeletedKey(componentHost.getHostName() + "/" + componentHost.getServiceComponentName());
} catch (Exception ex) {
deleteStatusMetaData.addException(componentHost.getHostName() + "/" + componentHost.getServiceComponentName(), ex);
}
@@ -3680,37 +3681,6 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
return deleteStatusMetaData;
}
- private void deleteHostComponent(ServiceComponent serviceComponent, ServiceComponentHost componentHost) throws AmbariException {
- String serviceName = serviceComponent.getServiceName();
- String master_component_name = null;
- String slave_component_name = componentHost.getServiceComponentName();
- HostComponentAdminState desiredAdminState = componentHost.getComponentAdminState();
- State slaveState = componentHost.getState();
- //Delete hostcomponents
- serviceComponent.deleteServiceComponentHosts(componentHost.getHostName());
- // If deleted hostcomponents support decomission and were decommited and stopped or in unknown state
- if (masterToSlaveMappingForDecom.containsValue(slave_component_name)
- && desiredAdminState.equals(HostComponentAdminState.DECOMMISSIONED)
- && (slaveState.equals(State.INSTALLED) || slaveState.equals(State.UNKNOWN))) {
- for (Entry<String, String> entrySet : masterToSlaveMappingForDecom.entrySet()) {
- if (entrySet.getValue().equals(slave_component_name)) {
- master_component_name = entrySet.getKey();
- }
- }
-
- //Mark master component as needed to restart for remove host info from components UI
- Cluster cluster = clusters.getCluster(serviceComponent.getClusterName());
- Service service = cluster.getService(serviceName);
- ServiceComponent sc = service.getServiceComponent(master_component_name);
-
- if (sc != null && sc.isMasterComponent()) {
- for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
- sch.setRestartRequired(true);
- }
- }
- }
- }
-
@Override
public void deleteUsers(Set<UserRequest> requests)
throws AmbariException {
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad593b4e/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index efb150f..cf78130 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -9328,6 +9328,75 @@ public class AmbariManagementControllerTest {
}
@Test
+ public void testRestartIndicatorsAndSlaveFilesUpdateAtComponentsDelete() throws Exception {
+ String cluster1 = getUniqueName();
+ createCluster(cluster1);
+ Cluster cluster = clusters.getCluster(cluster1);
+ StackId stackId = new StackId("HDP-2.0.7");
+ cluster.setDesiredStackVersion(stackId);
+ cluster.setCurrentStackVersion(stackId);
+
+ String hdfsService = "HDFS";
+ String zookeeperService = "ZOOKEEPER";
+ createService(cluster1, hdfsService, null);
+ createService(cluster1, zookeeperService, null);
+
+ String namenode = "NAMENODE";
+ String datanode = "DATANODE";
+ String zookeeperServer = "ZOOKEEPER_SERVER";
+ String zookeeperClient = "ZOOKEEPER_CLIENT";
+
+ createServiceComponent(cluster1, hdfsService, namenode,
+ State.INIT);
+ createServiceComponent(cluster1, hdfsService, datanode,
+ State.INIT);
+ createServiceComponent(cluster1, zookeeperService, zookeeperServer,
+ State.INIT);
+ createServiceComponent(cluster1, zookeeperService, zookeeperClient,
+ State.INIT);
+
+ String host1 = getUniqueName();
+ String host2 = getUniqueName();
+
+ addHostToCluster(host1, cluster1);
+ createServiceComponentHost(cluster1, hdfsService, namenode, host1, null);
+ createServiceComponentHost(cluster1, hdfsService, datanode, host1, null);
+ createServiceComponentHost(cluster1, zookeeperService, zookeeperServer, host1,
+ null);
+ createServiceComponentHost(cluster1, zookeeperService, zookeeperClient, host1,
+ null);
+
+ ServiceComponentHost nameNodeSch = null;
+ for (ServiceComponentHost sch : cluster.getServiceComponentHosts(host1)) {
+ if (sch.getServiceComponentName().equals(namenode)) {
+ nameNodeSch = sch;
+ }
+ }
+
+ assertFalse(nameNodeSch.isRestartRequired());
+
+ addHostToCluster(host2, cluster1);
+
+ createServiceComponentHost(cluster1, hdfsService, datanode, host2, null);
+ assertFalse(nameNodeSch.isRestartRequired()); //No restart required if adding host
+
+ deleteServiceComponentHost(cluster1, hdfsService, datanode, host2, null);
+ deleteHost(host2);
+
+ assertFalse(nameNodeSch.isRestartRequired()); //NameNode doesn't need to be restarted!
+
+ List<Long> requestIDs = actionDB.getRequestsByStatus(null, 1, false);
+ Request request = actionDB.getRequest(requestIDs.get(0));
+ assertEquals("Update Include and Exclude Files for [HDFS]", request.getRequestContext());
+ assertEquals("{\"multi_services_decom_request\":\"true\",\"update_files_only\":\"false\"}", request.getInputs());
+ assertEquals(1, request.getResourceFilters().size());
+ RequestResourceFilter resourceFilter = request.getResourceFilters().get(0);
+ assertEquals(resourceFilter.getServiceName(), hdfsService);
+ assertEquals(resourceFilter.getComponentName(), namenode);
+ assertEquals(resourceFilter.getHostNames(), new ArrayList<String>());
+ }
+
+ @Test
public void testMaintenanceState() throws Exception {
String cluster1 = getUniqueName();
createCluster(cluster1);