Browse Source

AMBARI-6036. When ATS is not running, Job details page just shows "Loading..." forever (alexantonenko)

Alex Antonenko 11 years ago
parent
commit
d5b830d395

+ 4 - 4
ambari-web/app/controllers/main/jobs_controller.js

@@ -391,13 +391,13 @@ App.MainJobsController = Em.Controller.extend({
     var atsComponent = App.HostComponent.find().findProperty('componentName','APP_TIMELINE_SERVER');
     if(atsComponent && atsComponent.get('workStatus') != "STARTED") {
       this.set('jobsMessage', Em.I18n.t('jobs.error.ats.down'));
-      return true;
     }else if (jqXHR && jqXHR.status == 400) {
       this.set('jobsMessage', Em.I18n.t('jobs.error.400'));
+    }else if ((!jqXHR && this.get('loaded') && !this.get('loading')) || (jqXHR && jqXHR.status == 500)) {
+      this.set('jobsMessage', Em.I18n.t('jobs.nothingToShow'));
     }else{
       this.set('jobsMessage', Em.I18n.t('jobs.loadingTasks'));
     }
-    return false;
   },
 
   loadJobs : function() {
@@ -405,7 +405,7 @@ App.MainJobsController = Em.Controller.extend({
     var timeout = this.get('loadTimeout');
     var yarnService = App.YARNService.find().objectAt(0);
     var retryLoad = this.checkDataLoadingError();
-    if (yarnService != null && !retryLoad) {
+    if (yarnService != null) {
       this.set('loading', true);
       var historyServerHostName = yarnService.get('appTimelineServerNode.hostName');
       var filtersLink = this.get('filterObject').createJobsFiltersLink();
@@ -431,8 +431,8 @@ App.MainJobsController = Em.Controller.extend({
           self.set('loaded', true);
         }
       }, function (jqXHR, textStatus) {
-        self.checkDataLoadingError(jqXHR);
         App.hiveJobsMapper.map({entities : []});
+        self.checkDataLoadingError(jqXHR);
       });
     }else{
       clearTimeout(timeout);

+ 2 - 2
ambari-web/app/mappers/jobs/hive_job_mapper.js

@@ -47,9 +47,9 @@ App.hiveJobMapper = App.QuickDataMapper.create({
       hiveJob.id = json.entity;
       hiveJob.name = hiveJob.id;
       hiveJob.startTime = json.starttime;
-      if (json.endtime == undefined) {
+      if (typeof(json.endtime) == "undefined") {
         var i = 0;
-        while (hiveJob.endTime == undefined && json.events[i]) {
+        while (typeof(hiveJob.endTime) == "undefined" &&  json.events && json.events[i]) {
           if (json.events[i].eventtype == 'QUERY_COMPLETED') {
             hiveJob.endTime = json.events[i].timestamp;
           };

+ 5 - 9
ambari-web/app/templates/main/jobs.hbs

@@ -51,15 +51,11 @@
           </thead>
           <tbody>
           {{#if view.noDataToShow}}
-              <tr>
-                <td class="no-data" {{bindAttr colspan="controller.columnsName.columnsCount"}}>
-                  {{#if controller.loaded}}
-                    {{t jobs.nothingToShow}}
-                  {{else}}
-                    {{controller.jobsMessage}}
-                  {{/if}}
-                </td>
-              </tr>
+            <tr>
+              <td class="no-data" {{bindAttr colspan="controller.columnsName.columnsCount"}}>
+                {{controller.jobsMessage}}
+              </td>
+            </tr>
           {{else}}
             {{#each job in controller.sortedContent}}
               <tr>

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

@@ -99,6 +99,8 @@ module.exports = {
           errorCallback('job.dag.noname');
         }
       }
+    }, function () {
+      App.router.transitionTo('main.jobs.index');
     });
   },