Updated Branches:
  refs/heads/trunk 5b3a39c24 -> 94ee80d7b

AMBARI-2624. UI Service mapper inefficiently parses server data. (srimanth)


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

Branch: refs/heads/trunk
Commit: 94ee80d7b4bb5fa0a88bd37d9975b9cd8d55c2ee
Parents: 5b3a39c
Author: Srimanth Gunturi <[email protected]>
Authored: Wed Jul 10 19:47:15 2013 -0700
Committer: Srimanth Gunturi <[email protected]>
Committed: Thu Jul 11 10:31:37 2013 -0700

----------------------------------------------------------------------
 .../app/controllers/global/update_controller.js   | 11 +++++++----
 ambari-web/app/mappers/service_mapper.js          | 18 +++++++++++++++---
 2 files changed, 22 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/94ee80d7/ambari-web/app/controllers/global/update_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/update_controller.js 
b/ambari-web/app/controllers/global/update_controller.js
index 6338418..db53f0f 100644
--- a/ambari-web/app/controllers/global/update_controller.js
+++ b/ambari-web/app/controllers/global/update_controller.js
@@ -84,7 +84,7 @@ App.UpdateController = Em.Controller.extend({
       conditionalFields.push("components/host_components/metrics/flume/flume");
     }
     var conditionalFieldsString = conditionalFields.length > 0 ? ',' + 
conditionalFields.join(',') : '';
-    
+    var methodStartTs = new Date().getTime();
     var servicesUrl = isInitialLoad ? 
       //this.getUrl('/data/dashboard/services.json', 
'/services?fields=components/ServiceComponentInfo,components/host_components,components/host_components/HostRoles')
 :
       this.getUrl('/data/dashboard/services.json', 
'/services?fields=components/ServiceComponentInfo,components/host_components,components/host_components/HostRoles,components/host_components/metrics/jvm/memHeapUsedM,components/host_components/metrics/jvm/memHeapCommittedM,components/host_components/metrics/mapred/jobtracker/trackers_decommissioned,components/host_components/metrics/cpu/cpu_wio,components/host_components/metrics/rpc/RpcQueueTime_avg_time'+conditionalFieldsString):
@@ -92,9 +92,12 @@ App.UpdateController = Em.Controller.extend({
     var callback = callback || function (jqXHR, textStatus) {
       self.set('isUpdated', true);
     };
-      App.HttpClient.get(servicesUrl, App.servicesMapper, {
-        complete: callback
-      });
+    App.HttpClient.get(servicesUrl, App.servicesMapper, {
+      complete: function(){
+        console.log("UpdateServiceMetric() Finished in:"+ (new 
Date().getTime()-methodStartTs) + " ms");
+        callback();
+      }
+    });
   }
 
 });

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/94ee80d7/ambari-web/app/mappers/service_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/service_mapper.js 
b/ambari-web/app/mappers/service_mapper.js
index 79c73af..a08ad0a 100644
--- a/ambari-web/app/mappers/service_mapper.js
+++ b/ambari-web/app/mappers/service_mapper.js
@@ -213,18 +213,30 @@ App.servicesMapper = App.QuickDataMapper.create({
 
       var oldHostComponents = App.HostComponent.find();
       var item;
-      for (var i = 0; i < oldHostComponents.content.length; i++) {
+      var currentHCWithComponentNames = {};
+      var currentComponentNameHostNames = {};
+      for ( var i = 0; i < oldHostComponents.content.length; i++) {
         item = oldHostComponents.objectAt(i);
         if (item && !result.findProperty('id', item.get('id'))) {
           item.deleteRecord();
+        } else {
+          var componentName = item.get('componentName');
+          if (componentName) {
+            currentHCWithComponentNames[item.get('id')] = item.get('id');
+          }
+          if (!currentComponentNameHostNames[componentName]) {
+            currentComponentNameHostNames[componentName] = [];
+          }
+          
currentComponentNameHostNames[componentName].pushObject(item.get('host.hostName'));
         }
       }
       result.forEach(function (item) {
-        if (App.HostComponent.find(item.id).get('componentName') &&
-            !App.HostComponent.find().filterProperty('componentName', 
item.component_name).someProperty('host.hostName', item.host_id)) {
+        if (currentHCWithComponentNames[item.id] != null && 
+            
!currentComponentNameHostNames[item.component_name].contains(item.host_id)) {
           item.id = (new Date).getTime();
         }
       });
+      
       App.store.loadMany(this.get('model3'), result);
       for(var hostComponentId in hostComponentToActualConfigsMap){
         var hostComponentObj = App.HostComponent.find(hostComponentId);

Reply via email to