Преглед на файлове

AMBARI-6023. Datanode and Nodemanager count on the dashboard become null/null. (akovalenko)

Aleksandr Kovalenko преди 11 години
родител
ревизия
9fab24e60a
променени са 1 файла, в които са добавени 25 реда и са изтрити 16 реда
  1. 25 16
      ambari-web/app/mappers/service_mapper.js

+ 25 - 16
ambari-web/app/mappers/service_mapper.js

@@ -21,26 +21,35 @@ App.serviceMapper = App.QuickDataMapper.create({
   map: function (json) {
     console.time("App.serviceMapper execution time");
 
-    var servicesData = [];
     json.items.forEach(function (service) {
-      var serviceData = {
-        ServiceInfo: {
-          service_name: service.ServiceInfo.service_name,
-          state: service.ServiceInfo.state,
-          passive_state: service.ServiceInfo.maintenance_state
-        },
-        host_components: [],
-        components: []
-      };
-      //check whether Nagios installed and started
-      if (service.alerts) {
-        serviceData.ServiceInfo.critical_alerts_count = service.alerts.summary.CRITICAL + service.alerts.summary.WARNING;
+      var cachedService = App.cache['services'].findProperty('ServiceInfo.service_name', service.ServiceInfo.service_name);
+      if (cachedService) {
+        cachedService.ServiceInfo.state = service.ServiceInfo.state;
+        cachedService.ServiceInfo.passive_state = service.ServiceInfo.maintenance_state;
+
+        //check whether Nagios installed and started
+        if (service.alerts) {
+          cachedService.ServiceInfo.critical_alerts_count = service.alerts.summary.CRITICAL + service.alerts.summary.WARNING;
+        }
+      } else {
+        var serviceData = {
+          ServiceInfo: {
+            service_name: service.ServiceInfo.service_name,
+            state: service.ServiceInfo.state,
+            passive_state: service.ServiceInfo.maintenance_state
+          },
+          host_components: [],
+          components: []
+        };
+
+        //check whether Nagios installed and started
+        if (service.alerts) {
+          serviceData.ServiceInfo.critical_alerts_count = service.alerts.summary.CRITICAL + service.alerts.summary.WARNING;
+        }
+        App.cache['services'].push(serviceData);
       }
-      servicesData.push(serviceData);
     });
 
-    App.cache['services'] = servicesData;
-
     console.timeEnd("App.serviceMapper execution time");
   }
 });