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);
