You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2013/02/26 19:28:52 UTC

svn commit: r1450339 - in /incubator/ambari/trunk: ./ ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/ ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/ ambari-server/src/test/java/org/apache/ambari/server...

Author: tbeerbower
Date: Tue Feb 26 18:28:52 2013
New Revision: 1450339

URL: http://svn.apache.org/r1450339
Log:
AMBARI-1463 - State of HBase region server not updated when instance is shut down on a cluster not installed via Ambari.

Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/ClusterDefinition.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerProviderModule.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostComponentProviderTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostProviderTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerServiceProviderTest.java

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1450339&r1=1450338&r2=1450339&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Tue Feb 26 18:28:52 2013
@@ -376,6 +376,8 @@ Trunk (unreleased changes):
 
  BUG FIXES
 
+ AMBARI-1463. State of HBase region server not updated when instance is shut down on a cluster not installed via Ambari. (tbeerbower)
+ 
  AMBARI-1494. Browser memory consumption issues. (jaimin)
 
  AMBARI-1480. Comparison predicate should account for null values. (tbeerbower)

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/ClusterDefinition.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/ClusterDefinition.java?rev=1450339&r1=1450338&r2=1450339&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/ClusterDefinition.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/ClusterDefinition.java Tue Feb 26 18:28:52 2013
@@ -69,6 +69,11 @@ public class ClusterDefinition {
   private final Map<String, HostComponentState> hostComponentStateMap = new HashMap<String, HostComponentState>();
 
   /**
+   * Expiry for the health value.
+   */
+  private static final int DEFAULT_STATE_EXPIRY = 15000;
+
+  /**
    * Component name mapping to account for differences in what is provided by the gsInstaller
    * and what is expected by the Ambari providers.
    */
@@ -82,16 +87,27 @@ public class ClusterDefinition {
 
   /**
    * Create a cluster definition.
+   *
+   * @param stateProvider  the state provider
    */
   public ClusterDefinition(GSInstallerStateProvider stateProvider) {
+    this(stateProvider, DEFAULT_STATE_EXPIRY);
+  }
+
+  /**
+   * Create a cluster definition.
+   *
+   * @param stateProvider  the state provider
+   * @param stateExpiry    the state expiry
+   */
+  public ClusterDefinition(GSInstallerStateProvider stateProvider, int stateExpiry) {
     this.stateProvider = stateProvider;
     this.clusterName   = DEFAULT_CLUSTER_NAME;
     this.versionId     = DEFAULT_VERSION_ID;
     readClusterDefinition();
-    setHostComponentState();
+    setHostComponentState(stateExpiry);
   }
 
-
   // ----- ClusterDefinition -------------------------------------------------
 
   /**
@@ -270,7 +286,7 @@ public class ClusterDefinition {
   /**
    * Set the host component state maps.
    */
-  private void setHostComponentState() {
+  private void setHostComponentState(int stateExpiry) {
     for (Map.Entry<String, Map<String, Set<String>>> serviceEntry : hostComponents.entrySet()) {
       String serviceName = serviceEntry.getKey();
 
@@ -279,7 +295,7 @@ public class ClusterDefinition {
 
         for (String componentName : hostEntry.getValue()) {
 
-          HostComponentState state = new HostComponentState(hostName, componentName);
+          HostComponentState state = new HostComponentState(hostName, componentName, stateExpiry);
 
           // add state to hosts
           addState(hostName, hostStateMap, state);
@@ -378,14 +394,10 @@ public class ClusterDefinition {
   private class HostComponentState {
     private final String hostName;
     private final String componentName;
+    private final int expiry;
     private boolean healthy = true;
     private long lastAccess;
 
-    /**
-     * Expiry for the health value.
-     */
-    private static final int EXPIRY = 15000;
-
     // ----- Constructor -----------------------------------------------------
 
     /**
@@ -394,9 +406,10 @@ public class ClusterDefinition {
      * @param hostName       the host name
      * @param componentName  the component name
      */
-    HostComponentState(String hostName, String componentName) {
+    HostComponentState(String hostName, String componentName, int expiry) {
       this.hostName      = hostName;
       this.componentName = componentName;
+      this.expiry        = expiry;
     }
 
     /**
@@ -405,7 +418,7 @@ public class ClusterDefinition {
      * @return true if the associated host component is healthy
      */
     public boolean isHealthy() {
-      if (System.currentTimeMillis() - lastAccess > EXPIRY) {
+      if (System.currentTimeMillis() - lastAccess > expiry) {
         // health value has expired... get it again
         healthy = stateProvider.isHealthy(hostName, componentName);
         this.lastAccess = System.currentTimeMillis();

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerProviderModule.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerProviderModule.java?rev=1450339&r1=1450338&r2=1450339&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerProviderModule.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerProviderModule.java Tue Feb 26 18:28:52 2013
@@ -38,11 +38,12 @@ public class GSInstallerProviderModule e
   private static final Map<String, String> PORTS = new HashMap<String, String>();
 
   static {
-    PORTS.put("NAMENODE", "50070");
-    PORTS.put("DATANODE", "50075");
-    PORTS.put("JOBTRACKER", "50030");
-    PORTS.put("TASKTRACKER", "50060");
-    PORTS.put("HBASE_MASTER", "60010");
+    PORTS.put("NAMENODE",           "50070");
+    PORTS.put("DATANODE",           "50075");
+    PORTS.put("JOBTRACKER",         "50030");
+    PORTS.put("TASKTRACKER",        "50060");
+    PORTS.put("HBASE_MASTER",       "60010");
+    PORTS.put("HBASE_REGIONSERVER", "60030");
   }
 
   private static final int TIMEOUT = 5000;

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java?rev=1450339&r1=1450338&r2=1450339&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java Tue Feb 26 18:28:52 2013
@@ -61,11 +61,12 @@ public class JMXPropertyProvider extends
 
 
   static {
-    DEFAULT_JMX_PORTS.put("NAMENODE",     "50070");
-    DEFAULT_JMX_PORTS.put("DATANODE",     "50075");
-    DEFAULT_JMX_PORTS.put("JOBTRACKER",   "50030");
-    DEFAULT_JMX_PORTS.put("TASKTRACKER",  "50060");
-    DEFAULT_JMX_PORTS.put("HBASE_MASTER", "60010");
+    DEFAULT_JMX_PORTS.put("NAMENODE",           "50070");
+    DEFAULT_JMX_PORTS.put("DATANODE",           "50075");
+    DEFAULT_JMX_PORTS.put("JOBTRACKER",         "50030");
+    DEFAULT_JMX_PORTS.put("TASKTRACKER",        "50060");
+    DEFAULT_JMX_PORTS.put("HBASE_MASTER",       "60010");
+    DEFAULT_JMX_PORTS.put("HBASE_REGIONSERVER", "60030");
 
     ObjectMapper objectMapper = new ObjectMapper();
     objectMapper.configure(DeserializationConfig.Feature.USE_ANNOTATIONS, false);

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostComponentProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostComponentProviderTest.java?rev=1450339&r1=1450338&r2=1450339&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostComponentProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostComponentProviderTest.java Tue Feb 26 18:28:52 2013
@@ -55,6 +55,32 @@ public class GSInstallerHostComponentPro
   }
 
   @Test
+  public void testGetResourcesCheckState() throws Exception {
+    TestGSInstallerStateProvider stateProvider = new TestGSInstallerStateProvider();
+    ClusterDefinition clusterDefinition = new ClusterDefinition(stateProvider, 500);
+    GSInstallerResourceProvider provider = new GSInstallerHostComponentProvider(clusterDefinition);
+    Predicate predicate = new PredicateBuilder().property(GSInstallerHostComponentProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("HBASE_REGIONSERVER").toPredicate();
+    Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), predicate);
+    Assert.assertEquals(3, resources.size());
+
+    for (Resource resource : resources) {
+      Assert.assertEquals("STARTED", resource.getPropertyValue(GSInstallerHostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
+    }
+
+    stateProvider.setHealthy(false);
+
+    // need to wait for old state value to expire
+    Thread.sleep(501);
+
+    resources = provider.getResources(PropertyHelper.getReadRequest(), predicate);
+    Assert.assertEquals(3, resources.size());
+
+    for (Resource resource : resources) {
+      Assert.assertEquals("INIT", resource.getPropertyValue(GSInstallerHostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
+    }
+  }
+
+  @Test
   public void testCreateResources() throws Exception {
     ClusterDefinition clusterDefinition = new ClusterDefinition(new TestGSInstallerStateProvider());
     GSInstallerResourceProvider provider = new GSInstallerHostComponentProvider(clusterDefinition);

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostProviderTest.java?rev=1450339&r1=1450338&r2=1450339&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerHostProviderTest.java Tue Feb 26 18:28:52 2013
@@ -62,7 +62,7 @@ public class GSInstallerHostProviderTest
   @Test
   public void testGetResourcesCheckState() throws Exception {
     TestGSInstallerStateProvider stateProvider = new TestGSInstallerStateProvider();
-    ClusterDefinition clusterDefinition = new ClusterDefinition(stateProvider);
+    ClusterDefinition clusterDefinition = new ClusterDefinition(stateProvider, 500);
     GSInstallerResourceProvider provider = new GSInstallerHostProvider(clusterDefinition);
     Predicate predicate = new PredicateBuilder().property(GSInstallerHostProvider.HOST_NAME_PROPERTY_ID).equals("ip-10-190-97-104.ec2.internal").toPredicate();
     Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), predicate);
@@ -75,7 +75,7 @@ public class GSInstallerHostProviderTest
     stateProvider.setHealthy(false);
 
     // need to wait for old state value to expire
-    Thread.sleep(15001);
+    Thread.sleep(501);
 
     resources = provider.getResources(PropertyHelper.getReadRequest(), predicate);
     Assert.assertEquals(1, resources.size());

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerServiceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerServiceProviderTest.java?rev=1450339&r1=1450338&r2=1450339&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerServiceProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerServiceProviderTest.java Tue Feb 26 18:28:52 2013
@@ -62,7 +62,7 @@ public class GSInstallerServiceProviderT
   @Test
   public void testGetResourcesCheckState() throws Exception {
     TestGSInstallerStateProvider stateProvider = new TestGSInstallerStateProvider();
-    ClusterDefinition clusterDefinition = new ClusterDefinition(stateProvider);
+    ClusterDefinition clusterDefinition = new ClusterDefinition(stateProvider, 500);
     GSInstallerResourceProvider provider = new GSInstallerServiceProvider(clusterDefinition);
     Predicate predicate = new PredicateBuilder().property(GSInstallerServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
     Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), predicate);
@@ -75,7 +75,7 @@ public class GSInstallerServiceProviderT
     stateProvider.setHealthy(false);
 
     // need to wait for old state value to expire
-    Thread.sleep(15001);
+    Thread.sleep(501);
 
     resources = provider.getResources(PropertyHelper.getReadRequest(), predicate);
     Assert.assertEquals(1, resources.size());