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 2014/04/04 18:38:57 UTC

git commit: AMBARI-5342 Ambari YARN UI - Quick Link - JMX breaks if RM port is changed (dsen)

Repository: ambari
Updated Branches:
  refs/heads/trunk 7df81fabf -> 34476f2d4


AMBARI-5342 Ambari YARN UI - Quick Link - JMX breaks if RM port is changed (dsen)


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

Branch: refs/heads/trunk
Commit: 34476f2d44ad72752eb89de4ef1511f756eeda29
Parents: 7df81fa
Author: Dmitry Sen <ds...@hortonworks.com>
Authored: Fri Apr 4 19:38:46 2014 +0300
Committer: Dmitry Sen <ds...@hortonworks.com>
Committed: Fri Apr 4 19:38:46 2014 +0300

----------------------------------------------------------------------
 .../internal/AbstractProviderModule.java        |  4 +-
 .../internal/JMXHostProviderTest.java           | 52 +++++++++++++++++++-
 2 files changed, 53 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/34476f2d/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
index 4d358ec..ced22b1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
@@ -225,7 +225,9 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
         // Since concurrent thread access is expected we err on the side of
         // performance with a ConcurrentHashMap and maybe get default/existing
         // ports for a few calls.
-        if (!currVersion.equals(oldVersion)) {
+        if (!currVersion.equals(oldVersion) ||
+          !clusterJmxPorts.containsKey(componentName)) {
+
           serviceConfigVersions.put(service, currVersion);
           
           Map<String, String> portMap = getDesiredConfigMap(clusterName,

http://git-wip-us.apache.org/repos/asf/ambari/blob/34476f2d/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
index ec82e55..412b066 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
@@ -61,6 +61,7 @@ public class JMXHostProviderTest {
   private static final String NAMENODE_PORT_V1 = "dfs.http.address";
   private static final String NAMENODE_PORT_V2 = "dfs.namenode.http-address";
   private static final String DATANODE_PORT = "dfs.datanode.http.address";
+  private static final String RESOURCEMANAGER_PORT = "yarn.resourcemanager.webapp.address";
 
   @Before
   public void setup() throws Exception {
@@ -191,14 +192,17 @@ public class JMXHostProviderTest {
 
   private void createConfigs() throws AmbariException {
     String clusterName = "c1";
-    ClusterRequest r = new ClusterRequest(null, clusterName, "HDP-0.1", null);
+    ClusterRequest r = new ClusterRequest(null, clusterName, "HDP-2.0.6", null);
     controller.createCluster(r);
-    clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
+    clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-2.0.6"));
     String serviceName = "HDFS";
+    String serviceName2 = "YARN";
     createService(clusterName, serviceName, null);
+    createService(clusterName, serviceName2, null);
     String componentName1 = "NAMENODE";
     String componentName2 = "DATANODE";
     String componentName3 = "HDFS_CLIENT";
+    String componentName4 = "RESOURCEMANAGER";
 
     createServiceComponent(clusterName, serviceName, componentName1,
       State.INIT);
@@ -206,6 +210,8 @@ public class JMXHostProviderTest {
       State.INIT);
     createServiceComponent(clusterName, serviceName, componentName3,
       State.INIT);
+    createServiceComponent(clusterName, serviceName2, componentName4,
+      State.INIT);
 
     String host1 = "h1";
     clusters.addHost(host1);
@@ -228,6 +234,8 @@ public class JMXHostProviderTest {
       host1, null);
     createServiceComponentHost(clusterName, serviceName, componentName3,
       host2, null);
+    createServiceComponentHost(clusterName, serviceName2, componentName4,
+      host2, null);
 
     // Create configs
     Map<String, String> configs = new HashMap<String, String>();
@@ -235,6 +243,9 @@ public class JMXHostProviderTest {
     configs.put(DATANODE_PORT, "localhost:70075");
     configs.put("ambari.dfs.datanode.http.port", "70070");
 
+    Map<String, String> yarnConfigs = new HashMap<String, String>();
+    yarnConfigs.put(RESOURCEMANAGER_PORT, "8088");
+
     ConfigurationRequest cr1 = new ConfigurationRequest(clusterName,
       "hdfs-site", "versionN", configs);
 
@@ -244,6 +255,14 @@ public class JMXHostProviderTest {
     Cluster cluster = clusters.getCluster(clusterName);
     Assert.assertEquals("versionN", cluster.getDesiredConfigByType("hdfs-site")
       .getVersionTag());
+
+    ConfigurationRequest cr2 = new ConfigurationRequest(clusterName,
+      "yarn-site", "versionN", yarnConfigs);
+    crReq.setDesiredConfig(cr2);
+    controller.updateClusters(Collections.singleton(crReq), null);
+
+    Assert.assertEquals("versionN", cluster.getDesiredConfigByType("yarn-site")
+      .getVersionTag());
     Assert.assertEquals("localhost:${ambari.dfs.datanode.http.port}", cluster.getDesiredConfigByType
       ("hdfs-site").getProperties().get(NAMENODE_PORT_V1));
   }
@@ -309,6 +328,35 @@ public class JMXHostProviderTest {
     Assert.assertEquals(null, providerModule.getPort("c1", "HBASE_MASTER"));
   }
 
+  @Test
+  public void testJMXPortMapUpdate() throws
+    NoSuchParentResourceException,
+    ResourceAlreadyExistsException, UnsupportedPropertyException,
+    SystemException, AmbariException, NoSuchResourceException {
+
+    createConfigs();
+
+    JMXHostProviderModule providerModule = new JMXHostProviderModule();
+    providerModule.registerResourceProvider(Resource.Type.Cluster);
+    providerModule.registerResourceProvider(Resource.Type.Configuration);
+    // Non default port addresses
+    Assert.assertEquals("8088", providerModule.getPort("c1", "RESOURCEMANAGER"));
+
+    Map<String, String> yarnConfigs = new HashMap<String, String>();
+    yarnConfigs.put(RESOURCEMANAGER_PORT, "localhost:50030");
+    ConfigurationRequest cr2 = new ConfigurationRequest("c1",
+      "yarn-site", "versionN+1", yarnConfigs);
+
+    ClusterRequest crReq = new ClusterRequest(null, "c1", null, null);
+    crReq.setDesiredConfig(cr2);
+    controller.updateClusters(Collections.singleton(crReq), null);
+    Assert.assertEquals("50030", providerModule.getPort("c1", "RESOURCEMANAGER"));
+
+    //Unrelated ports
+    Assert.assertEquals("70070", providerModule.getPort("c1", "NAMENODE"));
+    Assert.assertEquals(null, providerModule.getPort("c1", "JOBTRACKER"));
+  }
+
   private static class JMXHostProviderModule extends
     AbstractProviderModule {