瀏覽代碼

AMBARI-4744. Going directly to hive query does not show any UI. (alexantonenko)

Alex Antonenko 11 年之前
父節點
當前提交
d463960187

+ 19 - 7
ambari-web/app/controllers/main/jobs/hive_job_details_controller.js

@@ -20,16 +20,28 @@ var jobsUtils = require('utils/jobs');
 
 App.MainHiveJobDetailsController = Em.Controller.extend({
   name : 'mainHiveJobDetailsController',
+
   content : null,
   loaded : false,
-  loadJobDetails : function() {
+  loadTimeout: null,
+
+  loadJobDetails : function(job) {
     var self = this;
-    this.set('loaded', false);
-    var content = this.get('content');
-    if (content != null) {
-      jobsUtils.refreshJobDetails(content, function() {
-        self.set('loaded', true);
-      });
+    var timeout = this.get('loadTimeout');
+    var yarnService = App.YARNService.find().objectAt(0);
+    if (yarnService != null) {
+      var self = this;
+      this.set('loaded', false);
+      if (job != null) {
+        jobsUtils.refreshJobDetails(job, function() {
+          self.set('loaded', true);
+        });
+      }
+    }else{
+      clearTimeout(timeout);
+      timeout = setTimeout(function(){
+        self.loadJobDetails(job);
+      }, 300);
     }
   },
 

+ 1 - 2
ambari-web/app/controllers/main/jobs_controller.js

@@ -272,7 +272,6 @@ App.MainJobsController = Em.ArrayController.extend({
       'filterObject.jobsLimit',
       'filterObject.user',
       'filterObject.windowStart',
-      'filterObject.windowEnd',
-      'App.router.clusterController.isLoaded'
+      'filterObject.windowEnd'
   )
 })

+ 3 - 0
ambari-web/app/mappers/jobs/hive_job_mapper.js

@@ -157,6 +157,9 @@ App.hiveJobMapper = App.QuickDataMapper.create({
           hiveJob.tezDag = tezDag.id;
         }
       }
+      if(App.HiveJob.find().get('content').length == 0){
+        App.store.load(model, hiveJob);
+      }
       var hiveJobRecord = App.HiveJob.find(hiveJob.id);
       if (hiveJobRecord != null) {
         hiveJobRecord.set('queryText', hiveJob.queryText);

+ 5 - 2
ambari-web/app/models/service/yarn.js

@@ -38,8 +38,11 @@ App.YARNService = App.Service.extend({
   appsKilled: DS.attr('number'),
   appsFailed: DS.attr('number'),
   ahsWebPort: function() {
-    return App.db.getConfigs().findProperty('type', 'yarn-site').properties['yarn.ahs.webapp.address']
-      .match(/:(\d+)/)[1];
+    var yarnConf = App.db.getConfigs().findProperty('type', 'yarn-site')
+    if(yarnConf){
+      return yarnConf.properties['yarn.ahs.webapp.address'].match(/:(\d+)/)[1];;
+    }
+    return "";
   }.property(),
   yarnClientNodes: function(){
     return this.get('hostComponents').filterProperty('componentName', 'YARN_CLIENT').mapProperty('host');

+ 2 - 4
ambari-web/app/routes/main.js

@@ -143,10 +143,8 @@ module.exports = Em.Route.extend({
       route : '/:job_id',
       connectOutlets : function(router, job) {
         if (job) {
-          if (job.get('jobType') === App.JobType.HIVE) {
-            router.get('mainController').connectOutlet('mainHiveJobDetails', job);
-            router.get('mainHiveJobDetailsController').loadJobDetails();
-          }
+          router.get('mainHiveJobDetailsController').loadJobDetails(job);
+          router.get('mainController').connectOutlet('mainHiveJobDetails');
         }
       }
     }),

+ 2 - 9
ambari-web/app/utils/jobs.js

@@ -27,15 +27,7 @@ module.exports = {
    *          successCallback
    */
   refreshJobDetails : function(job, successCallback) {
-    if (job) {
-      switch (job.get('jobType')) {
-      case App.JobType.HIVE:
-        this.refreshHiveJobDetails(job, successCallback);
-        break;
-      default:
-        break;
-      }
-    }
+    this.refreshHiveJobDetails(job, successCallback);
   },
 
   /**
@@ -60,6 +52,7 @@ module.exports = {
       complete : function(jqXHR, textStatus) {
         // Now get the Tez DAG ID from the DAG name
         var hiveRecord = App.HiveJob.find(hiveJobId);
+        App.router.get('mainHiveJobDetailsController').set('content', hiveRecord);
         var tezDagName = hiveRecord.get('tezDag.name');
         if (tezDagName != null) {
           var sender = {