Browse Source

AMBARI-6038. Remove status_mapper in order to stop updating all hosts, and start update only displayed one via hosts_mapper. (akovalenko)

Aleksandr Kovalenko 11 years ago
parent
commit
7e50afca60

+ 15 - 73
ambari-web/app/controllers/global/cluster_controller.js

@@ -25,10 +25,7 @@ App.ClusterController = Em.Controller.extend({
   ambariProperties: null,
   ambariViews: [],
   clusterDataLoadedPercent: 'width:0', // 0 to 1
-  /**
-   * Whether we need to update statuses automatically or not
-   */
-  isWorking: false,
+
   isGangliaUrlLoaded: false,
   isNagiosUrlLoaded: false,
 
@@ -233,57 +230,6 @@ App.ClusterController = Em.Controller.extend({
     return !!App.Service.find().findProperty('serviceName', 'GANGLIA');
   }.property('App.router.updateController.isUpdated', 'dataLoadList.serviceMetrics'),
 
-  /**
-   * Send request to server to load components updated statuses
-   * @param callback Slave function, should be called to fire delayed update.
-   * @param isInitialLoad
-   * Look at <code>App.updater.run</code> for more information
-   * @return {Boolean} Whether we have errors
-   */
-  loadUpdatedStatus: function (callback, isInitialLoad) {
-    if (!this.get('clusterName')) {
-      callback();
-      return false;
-    }
-    App.set('currentServerTime', App.get('currentServerTime') + App.componentsUpdateInterval);
-    var testUrl = App.get('isHadoop2Stack') ? '/data/hosts/HDP2/hc_host_status.json' : '/data/dashboard/services.json';
-    var statusUrl = '/hosts?fields=Hosts/host_status,Hosts/maintenance_state,host_components/HostRoles/state,host_components/HostRoles/maintenance_state,alerts/summary&minimal_response=true';
-    if (isInitialLoad) {
-      testUrl = '/data/hosts/HDP2/hosts_init.json';
-      statusUrl = '/hosts?fields=Hosts/host_name,Hosts/maintenance_state,Hosts/public_host_name,Hosts/cpu_count,Hosts/ph_cpu_count,Hosts/total_mem,' +
-        'Hosts/host_status,Hosts/last_heartbeat_time,Hosts/os_arch,Hosts/os_type,Hosts/ip,host_components/HostRoles/state,host_components/HostRoles/maintenance_state,' +
-        'Hosts/disk_info,metrics/disk,metrics/load/load_one,metrics/cpu/cpu_system,metrics/cpu/cpu_user,' +
-        'metrics/memory/mem_total,metrics/memory/mem_free,alerts/summary&minimal_response=true';
-    }
-    //desired_state property is eliminated since calculateState function is commented out, it become useless
-    statusUrl = this.getUrl(testUrl, statusUrl);
-
-    App.HttpClient.get(statusUrl, App.statusMapper, {
-      complete: callback
-    });
-    return true;
-  },
-
-  /**
-   * Run <code>loadUpdatedStatus</code> with delay
-   * @param delay
-   */
-  loadUpdatedStatusDelayed: function (delay) {
-    setTimeout(function () {
-      App.updater.immediateRun('loadUpdatedStatus');
-    }, delay);
-  },
-
-  /**
-   * Start polling, when <code>isWorking</code> become true
-   */
-  startPolling: function () {
-    if (!this.get('isWorking')) {
-      return false;
-    }
-    App.updater.run(this, 'loadUpdatedStatus', 'isWorking', App.componentsUpdateInterval); //update will not run it immediately
-    return true;
-  }.observes('isWorking'),
   /**
    *
    *  load all data and update load status
@@ -362,28 +308,24 @@ App.ClusterController = Em.Controller.extend({
       self.updateLoadStatus('stackComponents');
       updater.updateServices(function () {
         self.updateLoadStatus('services');
+        updater.updateHost(function () {
+          self.updateLoadStatus('hosts');
+        });
 
-        self.loadUpdatedStatus(function () {
-
-          updater.updateHost(function () {
-            self.updateLoadStatus('hosts');
-          });
-
-          updater.updateServiceMetric(function () {
-            updater.updateComponentsState(function () {
-              self.updateLoadStatus('componentsState');
-            });
-            self.updateLoadStatus('serviceMetrics');
+        updater.updateServiceMetric(function () {
+          updater.updateComponentsState(function () {
+            self.updateLoadStatus('componentsState');
           });
+          self.updateLoadStatus('serviceMetrics');
+        });
 
-          if (App.supports.hostOverrides) {
-            updater.updateComponentConfig(function () {
-              self.updateLoadStatus('componentConfigs');
-            });
-          } else {
+        if (App.supports.hostOverrides) {
+          updater.updateComponentConfig(function () {
             self.updateLoadStatus('componentConfigs');
-          }
-        }, true);
+          });
+        } else {
+          self.updateLoadStatus('componentConfigs');
+        }
       });
     });
   },

+ 0 - 2
ambari-web/app/controllers/main.js

@@ -66,13 +66,11 @@ App.MainController = Em.Controller.extend({
     if (App.router.get('clusterController.isLoaded')) {
       App.router.get('updateController').set('isWorking', true);
       App.router.get('backgroundOperationsController').set('isWorking', true);
-      App.router.get('clusterController').set('isWorking', true);
     }
   }.observes('App.router.clusterController.isLoaded'),
   stopPolling: function(){
     App.router.get('updateController').set('isWorking', false);
     App.router.get('backgroundOperationsController').set('isWorking', false);
-    App.router.get('clusterController').set('isWorking', false);
   },
 
   reloadTimeOut: null,

+ 0 - 13
ambari-web/app/controllers/main/host/details.js

@@ -190,8 +190,6 @@ App.MainHostDetailsController = Em.Controller.extend({
 
     if (App.testMode) {
       this.mimicWorkStatusChange(params.component, App.HostComponentStatus.starting, App.HostComponentStatus.started);
-    } else {
-      App.router.get('clusterController').loadUpdatedStatusDelayed(500);
     }
     this.showBackgroundOperationsPopup();
   },
@@ -378,8 +376,6 @@ App.MainHostDetailsController = Em.Controller.extend({
 
     if (App.testMode) {
       this.mimicWorkStatusChange(params.component, App.HostComponentStatus.starting, App.HostComponentStatus.started);
-    } else {
-      App.router.get('clusterController').loadUpdatedStatusDelayed(500);
     }
     this.showBackgroundOperationsPopup();
   },
@@ -433,8 +429,6 @@ App.MainHostDetailsController = Em.Controller.extend({
 
     if (App.testMode) {
       this.mimicWorkStatusChange(params.component, App.HostComponentStatus.stopping, App.HostComponentStatus.stopped);
-    } else {
-      App.router.get('clusterController').loadUpdatedStatusDelayed(500);
     }
     this.showBackgroundOperationsPopup();
   },
@@ -630,8 +624,6 @@ App.MainHostDetailsController = Em.Controller.extend({
 
     if (App.testMode) {
       this.mimicWorkStatusChange(params.component, App.HostComponentStatus.installing, App.HostComponentStatus.stopped);
-    } else {
-      App.router.get('clusterController').loadUpdatedStatusDelayed(500);
     }
 
     this.showBackgroundOperationsPopup(function () {
@@ -905,8 +897,6 @@ App.MainHostDetailsController = Em.Controller.extend({
     console.log('Send request for REINSTALL COMPONENT successfully');
     if (App.testMode) {
       this.mimicWorkStatusChange(params.component, App.HostComponentStatus.installing, App.HostComponentStatus.stopped);
-    } else {
-      App.router.get('clusterController').loadUpdatedStatusDelayed(500);
     }
     this.showBackgroundOperationsPopup();
   },
@@ -1100,9 +1090,6 @@ App.MainHostDetailsController = Em.Controller.extend({
    */
   decommissionSuccessCallback: function (data) {
     if (data && (data.Requests || data.resources[0].RequestSchedule)) {
-      if (!App.testMode) {
-        App.router.get('clusterController').loadUpdatedStatusDelayed(500);
-      }
       this.showBackgroundOperationsPopup();
       return true;
     } else {

+ 0 - 3
ambari-web/app/controllers/main/service/item.js

@@ -63,9 +63,6 @@ App.MainServiceItemController = Em.Controller.extend({
           self.get('content.hostComponents').setEach('workStatus', App.HostComponentStatus[config.hs]);
         }, App.testModeDelayForActions);
       }
-      else {
-        App.router.get('clusterController').loadUpdatedStatusDelayed(500);// @todo check working without param 500
-      }
       // load data (if we need to show this background operations popup) from persist
       App.router.get('applicationController').dataLoading().done(function (initValue) {
         if (initValue) {

+ 0 - 1
ambari-web/app/mappers.js

@@ -19,7 +19,6 @@
 //load all mappers
 require('mappers/server_data_mapper');
 require('mappers/stack_service_component_mapper');
-require('mappers/status_mapper');
 require('mappers/hosts_mapper');
 require('mappers/cluster_mapper');
 require('mappers/jobs_mapper');

+ 0 - 121
ambari-web/app/mappers/status_mapper.js

@@ -1,121 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-var App = require('app');
-
-App.statusMapper = App.QuickDataMapper.create({
-  model: App.HostComponent,
-  map: function (json) {
-    console.time('App.statusMapper execution time');
-    if (json.items) {
-      var previousComponentStatuses = App.cache['previousComponentStatuses'];
-      var previousComponentPassiveStates = App.cache['previousComponentPassiveStates'];
-      var hostComponentRecordsMap = App.cache['hostComponentRecordsMap'];
-      var servicesCache = App.cache['services'];
-      var addedHostComponents = [];
-      var updatedHostComponents = [];
-      var componentServiceMap = App.QuickDataMapper.componentServiceMap();
-      var currentComponentStatuses = {};
-      var currentComponentPassiveStates = {};
-      var hostComponentsOnService = {};
-
-      json.items.forEach(function (host) {
-        var hostName = host.Hosts.host_name;
-
-        var hostComponentsOnHost = [];
-        host.host_components.forEach(function (host_component) {
-          host_component.id = host_component.HostRoles.component_name + "_" + hostName;
-          var existedComponent = previousComponentStatuses[host_component.id];
-          var existedPassiveComponent = previousComponentPassiveStates[host_component.id];
-          var service = componentServiceMap[host_component.HostRoles.component_name];
-
-          //delete all currently existed host-components to indicate which need to be deleted from model
-          delete previousComponentStatuses[host_component.id];
-          delete previousComponentPassiveStates[host_component.id];
-
-          if (existedComponent || existedPassiveComponent) {
-            //update host-components, which have status changed
-            if (existedComponent !== host_component.HostRoles.state || existedPassiveComponent !== host_component.HostRoles.maintenance_state) {
-              updatedHostComponents.push(host_component);
-            }
-          } else {
-            addedHostComponents.push({
-              id: host_component.id,
-              component_name: host_component.HostRoles.component_name,
-              passive_state: host_component.HostRoles.maintenance_state,
-              work_status: host_component.HostRoles.state,
-              host_id: hostName,
-              service_id: service
-            });
-          }
-          currentComponentStatuses[host_component.id] = host_component.HostRoles.state;
-          currentComponentPassiveStates[host_component.id] = host_component.HostRoles.maintenance_state;
-          //host-components to host relations
-          hostComponentsOnHost.push(host_component.id);
-          //host-component to service relations
-          if (!hostComponentsOnService[service]) {
-            hostComponentsOnService[service] = {
-              host_components: []
-            };
-          }
-          hostComponentsOnService[service].host_components.push(host_component.id);
-        }, this);
-
-      }, this);
-
-
-      for (var id in previousComponentStatuses) {
-        this.deleteRecord(hostComponentRecordsMap[id]);
-      }
-
-      updatedHostComponents.forEach(function (hostComponent) {
-        var hostComponentRecord = hostComponentRecordsMap[hostComponent.id];
-        if (hostComponentRecord) {
-          hostComponentRecord.set('workStatus', hostComponent.HostRoles.state);
-          hostComponentRecord.set('passiveState', hostComponent.HostRoles.maintenance_state);
-        }
-      }, this);
-
-      if (addedHostComponents.length) {
-        App.store.loadMany(this.get('model'), addedHostComponents);
-        App.HostComponent.find().forEach(function(hostComponent){
-          hostComponentRecordsMap[hostComponent.get('id')] = hostComponent;
-        });
-      }
-
-      // update services workStatus and passiveState
-      App.Service.find().forEach(function (service) {
-        var cachedServiceData = servicesCache.findProperty('ServiceInfo.service_name', service.get('serviceName'));
-        if (cachedServiceData) {
-          service.set('workStatus', cachedServiceData.ServiceInfo.state);
-          service.set('passiveState', cachedServiceData.ServiceInfo.passive_state);
-        }
-      }, this);
-
-      //TODO remove when App.Host model dependencies will be replaced with server request
-      if (!App.router.get('clusterController.isLoaded')) {
-        App.hostsMapper.map(json);
-      }
-
-      App.cache['previousComponentStatuses'] = currentComponentStatuses;
-      App.cache['previousComponentPassiveStates'] = currentComponentPassiveStates;
-      App.cache['hostComponentsOnService'] = hostComponentsOnService;
-
-    }
-    console.timeEnd('App.statusMapper execution time');
-  }
-});