浏览代码

AMBARI-6139 Cluster health report contains incorrect data (dsen)

Dmitry Sen 11 年之前
父节点
当前提交
0ab141e8d4

+ 7 - 8
ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java

@@ -63,6 +63,7 @@ import org.apache.ambari.server.state.ConfigFactory;
 import org.apache.ambari.server.state.ConfigHelper;
 import org.apache.ambari.server.state.DesiredConfig;
 import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.HostHealthStatus;
 import org.apache.ambari.server.state.MaintenanceState;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponent;
@@ -1101,11 +1102,10 @@ public class ClusterImpl implements Cluster {
       readWriteLock.readLock().lock();
       try {
         Map<String, Host> hosts = clusters.getHostsForCluster(getClusterName());
-        ClusterResponse r = new ClusterResponse(getClusterId(),
+
+        return new ClusterResponse(getClusterId(),
           getClusterName(), getProvisioningState(), hosts.keySet(), hosts.size(),
           getDesiredStackVersion().getStackId(), getClusterHealthReport());
-
-        return r;
       } finally {
         readWriteLock.readLock().unlock();
       }
@@ -1505,7 +1505,7 @@ public class ClusterImpl implements Cluster {
           break;
       }
 
-      switch (host.getHealthStatus().getHealthStatus()) {
+      switch (HostHealthStatus.HealthStatus.valueOf(host.getStatus())) {
         case HEALTHY:
           healthyStatusHosts++;
           break;
@@ -1525,10 +1525,9 @@ public class ClusterImpl implements Cluster {
 
       if (serviceComponentHostsByHost.containsKey(hostname)) {
         for (ServiceComponentHost sch : serviceComponentHostsByHost.get(hostname)) {
-          staleConfig = configHelper.isStaleConfigs(sch) ? true : staleConfig;
-          maintenanceState =
-            maintenanceStateHelper.getEffectiveState(sch) == MaintenanceState.ON ?
-              true : maintenanceState;
+          staleConfig = staleConfig || configHelper.isStaleConfigs(sch);
+          maintenanceState = maintenanceState ||
+            maintenanceStateHelper.getEffectiveState(sch) != MaintenanceState.OFF;
         }
       }
 

+ 1 - 0
ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java

@@ -482,6 +482,7 @@ public class ClusterTest {
     host.setHostAttributes(hostAttributes);
     host.setState(HostState.HEALTHY);
     host.setHealthStatus(new HostHealthStatus(HostHealthStatus.HealthStatus.HEALTHY, ""));
+    host.setStatus(host.getHealthStatus().getHealthStatus().name());
     host.persist();
     c1.setDesiredStackVersion(new StackId("HDP-2.0.6"));
     clusters.mapHostToCluster("h2", "c1");