You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2013/10/25 19:09:22 UTC

git commit: AMBARI-3591. Fix for JMX not throwing exception when HostComponent is not found.

Updated Branches:
  refs/heads/trunk ec7f70673 -> bb62d39bc


AMBARI-3591. Fix for JMX not throwing exception when HostComponent is not found.


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

Branch: refs/heads/trunk
Commit: bb62d39bc71648f1e4cf559c0ca4364b76626d33
Parents: ec7f706
Author: Nate Cole <nc...@hortonworks.com>
Authored: Fri Oct 25 13:04:12 2013 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Fri Oct 25 13:09:15 2013 -0400

----------------------------------------------------------------------
 .../controller/jmx/JMXPropertyProvider.java     |  8 ++---
 .../controller/jmx/JMXPropertyProviderTest.java | 31 ++++++++++++++++++++
 2 files changed, 35 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/bb62d39b/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java
index dc1c61e..baa39bd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java
@@ -303,14 +303,14 @@ public class JMXPropertyProvider extends AbstractPropertyProvider {
 
     String port = getPort(clusterName, componentName);
     if (port == null) {
-      throw new SystemException(
-          "Unable to get JMX metrics.  No port value for " + componentName, null);
+      LOG.warn("Unable to get JMX metrics.  No port value for " + componentName);
+      return resource;
     }
 
     String hostName = getHost(resource, clusterName, componentName);
     if (hostName == null) {
-      throw new SystemException(
-          "Unable to get JMX metrics.  No host name for " + componentName, null);
+      LOG.warn("Unable to get JMX metrics.  No host name for " + componentName);
+      return resource;
     }
     
     String protocol = getJMXProtocol(clusterName, componentName);

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/bb62d39b/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
index 6aafd98..38684ab 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
@@ -777,7 +777,38 @@ public class JMXPropertyProviderTest {
     Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "currentLagTxns")));
     Assert.assertEquals(8444, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "lastWrittenTxId")));
   }
+  
+  @Test
+  public void testPopulateResources_NoRegionServer() throws Exception {
+    TestStreamProvider streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+
+    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP2),
+        streamProvider,
+        hostProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        null, // force use of the hostProvider, which returns null for this test
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        Collections.singleton("STARTED"));
 
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "domu-12-31-39-0e-34-e1.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "HBASE_REGIONSERVER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    int preSize = resource.getPropertiesMap().size();
+    
+    // request with an empty set should get all supported properties
+    Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    Assert.assertEquals(preSize, resource.getPropertiesMap().size());
+  }
+    
   private static class TestJMXHostProvider implements JMXHostProvider {
     private final boolean unknownPort;