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 2015/08/11 22:22:03 UTC

ambari git commit: AMBARI-12688 HDFS check fails after move NameNode on NN HA cluster (dsen)

Repository: ambari
Updated Branches:
  refs/heads/trunk ad97b3049 -> f111bb3a0


AMBARI-12688 HDFS check fails after move NameNode on NN HA cluster (dsen)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f111bb3a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f111bb3a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f111bb3a

Branch: refs/heads/trunk
Commit: f111bb3a0dc2103d0a708e98246bb214daa50e92
Parents: ad97b30
Author: Dmytro Sen <ds...@apache.org>
Authored: Tue Aug 11 23:21:54 2015 +0300
Committer: Dmytro Sen <ds...@apache.org>
Committed: Tue Aug 11 23:21:54 2015 +0300

----------------------------------------------------------------------
 .../ambari/server/topology/LogicalRequest.java  |  9 ++-
 .../ambari/server/topology/TopologyManager.java |  5 +-
 .../apache/ambari/server/utils/StageUtils.java  |  3 +-
 .../server/controller/KerberosHelperTest.java   |  2 +-
 .../ambari/server/utils/StageUtilsTest.java     | 63 +++++++++++---------
 5 files changed, 47 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f111bb3a/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java
index b7f95cf..9eb3598 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java
@@ -43,6 +43,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -178,11 +179,15 @@ public class LogicalRequest extends Request {
     return new ArrayList<HostRequest>(allHostRequests);
   }
 
-  public Map<String, Collection<String>> getProjectedTopology() {
+  public Map<String, Collection<String>> getPendingHostComponents() {
     Map<String, Collection<String>> hostComponentMap = new HashMap<String, Collection<String>>();
 
+    Set<HostRequest> pendingRequests =
+      new HashSet<HostRequest>(requestsWithReservedHosts.values());
+    pendingRequests.addAll(outstandingHostRequests);
+
     //todo: synchronization
-    for (HostRequest hostRequest : allHostRequests) {
+    for (HostRequest hostRequest : pendingRequests) {
       HostGroup hostGroup = hostRequest.getHostGroup();
       for (String host : topology.getHostGroupInfo().get(hostGroup.getName()).getHostNames()) {
         Collection<String> hostComponents = hostComponentMap.get(host);

http://git-wip-us.apache.org/repos/asf/ambari/blob/f111bb3a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
index 8e7fb7f..4f51d47 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
@@ -287,12 +287,13 @@ public class TopologyManager {
     return clusterTopologyMap.get(clusterName);
   }
 
-  public Map<String, Collection<String>> getProjectedTopology() {
+  public Map<String, Collection<String>> getPendingHostComponents() {
     ensureInitialized();
     Map<String, Collection<String>> hostComponentMap = new HashMap<String, Collection<String>>();
 
     for (LogicalRequest logicalRequest : allRequests.values()) {
-      Map<String, Collection<String>> requestTopology = logicalRequest.getProjectedTopology();
+      Map<String, Collection<String>> requestTopology =
+        logicalRequest.getPendingHostComponents();
       for (Map.Entry<String, Collection<String>> entry : requestTopology.entrySet()) {
         String host = entry.getKey();
         Collection<String> hostComponents = hostComponentMap.get(host);

http://git-wip-us.apache.org/repos/asf/ambari/blob/f111bb3a/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java b/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
index 3da0fe2..4040cc1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
@@ -277,7 +277,8 @@ public class StageUtils {
     }
 
     // add hosts from topology manager
-    Map<String, Collection<String>> pendingHostComponents = topologyManager.getProjectedTopology();
+    Map<String, Collection<String>> pendingHostComponents =
+      topologyManager.getPendingHostComponents();
     for (String hostname : pendingHostComponents.keySet()) {
       if (!hostsSet.contains(hostname)) {
         hostsSet.add(hostname);

http://git-wip-us.apache.org/repos/asf/ambari/blob/f111bb3a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
index 5d84fbc..bf79144 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
@@ -194,7 +194,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     setClusterController();
     //todo: StageUtils shouldn't be called for this test
     StageUtils.setTopologyManager(topologyManager);
-    expect(topologyManager.getProjectedTopology()).andReturn(
+    expect(topologyManager.getPendingHostComponents()).andReturn(
         Collections.<String, Collection<String>>emptyMap()).anyTimes();
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/f111bb3a/ambari-server/src/test/java/org/apache/ambari/server/utils/StageUtilsTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/utils/StageUtilsTest.java b/ambari-server/src/test/java/org/apache/ambari/server/utils/StageUtilsTest.java
index 7cc70e8..aa21123 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/utils/StageUtilsTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/utils/StageUtilsTest.java
@@ -35,6 +35,7 @@ import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -307,7 +308,7 @@ public class StageUtilsTest extends EasyMockSupport {
     final ServiceComponentHost nns7ServiceComponentHost = createMock(ServiceComponentHost.class);
     expect(nns7ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
 
-    Map<String, Collection<String>> projectedTopology = new HashMap<String, Collection<String>>();
+    Map<String, Collection<String>> pendingHostComponents = new HashMap<String, Collection<String>>();
 
 
     final HashMap<String, ServiceComponentHost> nnServiceComponentHosts = new HashMap<String, ServiceComponentHost>() {
@@ -315,14 +316,14 @@ public class StageUtilsTest extends EasyMockSupport {
         put("h0", nnh0ServiceComponentHost);
       }
     };
-    insertTopology(projectedTopology, "NAMENODE", nnServiceComponentHosts.keySet());
+    insertTopology(pendingHostComponents, "NAMENODE", nnServiceComponentHosts.keySet());
 
     final HashMap<String, ServiceComponentHost> snnServiceComponentHosts = new HashMap<String, ServiceComponentHost>() {
       {
         put("h1", snnh1ServiceComponentHost);
       }
     };
-    insertTopology(projectedTopology, "SECONDARY_NAMENODE", snnServiceComponentHosts.keySet());
+    insertTopology(pendingHostComponents, "SECONDARY_NAMENODE", snnServiceComponentHosts.keySet());
 
     final Map<String, ServiceComponentHost> dnServiceComponentHosts = new HashMap<String, ServiceComponentHost>() {
       {
@@ -336,14 +337,14 @@ public class StageUtilsTest extends EasyMockSupport {
         put("h9", dnh9ServiceComponentHost);
       }
     };
-    insertTopology(projectedTopology, "DATANODE", dnServiceComponentHosts.keySet());
+    insertTopology(pendingHostComponents, "DATANODE", dnServiceComponentHosts.keySet());
 
     final Map<String, ServiceComponentHost> hbmServiceComponentHosts = new HashMap<String, ServiceComponentHost>() {
       {
         put("h5", hbm5ServiceComponentHost);
       }
     };
-    insertTopology(projectedTopology, "HBASE_MASTER", hbmServiceComponentHosts.keySet());
+    insertTopology(pendingHostComponents, "HBASE_MASTER", hbmServiceComponentHosts.keySet());
 
     final Map<String, ServiceComponentHost> hbrsServiceComponentHosts = new HashMap<String, ServiceComponentHost>() {
       {
@@ -354,14 +355,14 @@ public class StageUtilsTest extends EasyMockSupport {
         put("h9", hbrs9ServiceComponentHost);
       }
     };
-    insertTopology(projectedTopology, "HBASE_REGIONSERVER", hbrsServiceComponentHosts.keySet());
+    insertTopology(pendingHostComponents, "HBASE_REGIONSERVER", hbrsServiceComponentHosts.keySet());
 
     final Map<String, ServiceComponentHost> mrjtServiceComponentHosts = new HashMap<String, ServiceComponentHost>() {
       {
         put("h5", mrjt5ServiceComponentHost);
       }
     };
-    insertTopology(projectedTopology, "JOBTRACKER", mrjtServiceComponentHosts.keySet());
+    insertTopology(pendingHostComponents, "JOBTRACKER", mrjtServiceComponentHosts.keySet());
 
     final Map<String, ServiceComponentHost> mrttServiceComponentHosts = new HashMap<String, ServiceComponentHost>() {
       {
@@ -374,7 +375,7 @@ public class StageUtilsTest extends EasyMockSupport {
         put("h9", mrtt9ServiceComponentHost);
       }
     };
-    insertTopology(projectedTopology, "TASKTRACKER", mrttServiceComponentHosts.keySet());
+    insertTopology(pendingHostComponents, "TASKTRACKER", mrttServiceComponentHosts.keySet());
 
 
     final Map<String, ServiceComponentHost> nnsServiceComponentHosts = new HashMap<String, ServiceComponentHost>() {
@@ -382,7 +383,7 @@ public class StageUtilsTest extends EasyMockSupport {
         put("h7", nns7ServiceComponentHost);
       }
     };
-    insertTopology(projectedTopology, "NONAME_SERVER", nnsServiceComponentHosts.keySet());
+    insertTopology(pendingHostComponents, "NONAME_SERVER", nnsServiceComponentHosts.keySet());
 
     final ServiceComponent nnComponent = createMock(ServiceComponent.class);
     expect(nnComponent.getName()).andReturn("NAMENODE").anyTimes();
@@ -528,8 +529,8 @@ public class StageUtilsTest extends EasyMockSupport {
 
 
     final TopologyManager topologyManager = injector.getInstance(TopologyManager.class);
-    topologyManager.getProjectedTopology();
-    expectLastCall().andReturn(projectedTopology).once();
+    topologyManager.getPendingHostComponents();
+    expectLastCall().andReturn(Collections.emptyMap()).once();
 
     replayAll();
 
@@ -548,14 +549,14 @@ public class StageUtilsTest extends EasyMockSupport {
       assertTrue(allHosts.contains(host.getHostName()));
     }
 
-    checkServiceHostIndexes(info, "DATANODE", "slave_hosts", projectedTopology, hostNames);
-    checkServiceHostIndexes(info, "NAMENODE", "namenode_host", projectedTopology, hostNames);
-    checkServiceHostIndexes(info, "SECONDARY_NAMENODE", "snamenode_host", projectedTopology, hostNames);
-    checkServiceHostIndexes(info, "HBASE_MASTER", "hbase_master_hosts", projectedTopology, hostNames);
-    checkServiceHostIndexes(info, "HBASE_REGIONSERVER", "hbase_rs_hosts", projectedTopology, hostNames);
-    checkServiceHostIndexes(info, "JOBTRACKER", "jtnode_host", projectedTopology, hostNames);
-    checkServiceHostIndexes(info, "TASKTRACKER", "mapred_tt_hosts", projectedTopology, hostNames);
-    checkServiceHostIndexes(info, "NONAME_SERVER", "noname_server_hosts", projectedTopology, hostNames);
+    checkServiceHostIndexes(info, "DATANODE", "slave_hosts", pendingHostComponents, hostNames);
+    checkServiceHostIndexes(info, "NAMENODE", "namenode_host", pendingHostComponents, hostNames);
+    checkServiceHostIndexes(info, "SECONDARY_NAMENODE", "snamenode_host", pendingHostComponents, hostNames);
+    checkServiceHostIndexes(info, "HBASE_MASTER", "hbase_master_hosts", pendingHostComponents, hostNames);
+    checkServiceHostIndexes(info, "HBASE_REGIONSERVER", "hbase_rs_hosts", pendingHostComponents, hostNames);
+    checkServiceHostIndexes(info, "JOBTRACKER", "jtnode_host", pendingHostComponents, hostNames);
+    checkServiceHostIndexes(info, "TASKTRACKER", "mapred_tt_hosts", pendingHostComponents, hostNames);
+    checkServiceHostIndexes(info, "NONAME_SERVER", "noname_server_hosts", pendingHostComponents, hostNames);
 
     Set<String> actualPingPorts = info.get(StageUtils.PORTS);
     if (pingPorts.contains(null)) {
@@ -589,14 +590,14 @@ public class StageUtilsTest extends EasyMockSupport {
     // Validate substitutions...
     info = StageUtils.substituteHostIndexes(info);
 
-    checkServiceHostNames(info, "DATANODE", "slave_hosts", projectedTopology);
-    checkServiceHostNames(info, "NAMENODE", "namenode_host", projectedTopology);
-    checkServiceHostNames(info, "SECONDARY_NAMENODE", "snamenode_host", projectedTopology);
-    checkServiceHostNames(info, "HBASE_MASTER", "hbase_master_hosts", projectedTopology);
-    checkServiceHostNames(info, "HBASE_REGIONSERVER", "hbase_rs_hosts", projectedTopology);
-    checkServiceHostNames(info, "JOBTRACKER", "jtnode_host", projectedTopology);
-    checkServiceHostNames(info, "TASKTRACKER", "mapred_tt_hosts", projectedTopology);
-    checkServiceHostNames(info, "NONAME_SERVER", "noname_server_hosts", projectedTopology);
+    checkServiceHostNames(info, "DATANODE", "slave_hosts", pendingHostComponents);
+    checkServiceHostNames(info, "NAMENODE", "namenode_host", pendingHostComponents);
+    checkServiceHostNames(info, "SECONDARY_NAMENODE", "snamenode_host", pendingHostComponents);
+    checkServiceHostNames(info, "HBASE_MASTER", "hbase_master_hosts", pendingHostComponents);
+    checkServiceHostNames(info, "HBASE_REGIONSERVER", "hbase_rs_hosts", pendingHostComponents);
+    checkServiceHostNames(info, "JOBTRACKER", "jtnode_host", pendingHostComponents);
+    checkServiceHostNames(info, "TASKTRACKER", "mapred_tt_hosts", pendingHostComponents);
+    checkServiceHostNames(info, "NONAME_SERVER", "noname_server_hosts", pendingHostComponents);
   }
 
   private void insertTopology(Map<String, Collection<String>> projectedTopology, String componentName, Set<String> hostNames) {
@@ -614,8 +615,12 @@ public class StageUtilsTest extends EasyMockSupport {
     }
   }
 
-  private void checkServiceHostIndexes(Map<String, Set<String>> info, String componentName, String mappedComponentName,
-                                       Map<String, Collection<String>> serviceTopology, List<String> hostList) {
+  private void checkServiceHostIndexes(Map<String, Set<String>> info,
+                                       String componentName,
+                                       String mappedComponentName,
+                                       Map<String, Collection<String>> serviceTopology,
+                                       List<String> hostList) {
+
     Set<Integer> expectedHostsList = new HashSet<Integer>();
     Set<Integer> actualHostsList = new HashSet<Integer>();