فهرست منبع

HUE-5812 [frontend] Fix leaking job count requests

Johan Ahlen 8 سال پیش
والد
کامیت
2dfd19f

+ 9 - 5
desktop/core/src/desktop/templates/common_header_footer_components.mako

@@ -247,9 +247,14 @@ from metadata.conf import has_optimizer, OPTIMIZER
       % if 'jobbrowser' in apps:
       var JB_CHECK_INTERVAL_IN_MILLIS = 30000;
       var checkJobBrowserStatusIdx = window.setTimeout(checkJobBrowserStatus, 10);
+      var lastJobBrowserRequest = null;
 
       function checkJobBrowserStatus(){
-        $.post("/jobbrowser/jobs/", {
+        if (lastJobBrowserRequest !== null && lastJobBrowserRequest.readyState < 4) {
+          return;
+        }
+        window.clearTimeout(checkJobBrowserStatusIdx);
+        lastJobBrowserRequest = $.post("/jobbrowser/jobs/", {
             "format": "json",
             "state": "running",
             "user": "${user.username}"
@@ -258,10 +263,9 @@ from metadata.conf import has_optimizer, OPTIMIZER
             if (data != null && data.jobs != null) {
               huePubSub.publish('jobbrowser.data', data.jobs);
               if (data.jobs.length > 0){
-                $("#jobBrowserCount").removeClass("hide").text(data.jobs.length);
-              }
-              else {
-                $("#jobBrowserCount").addClass("hide");
+                $("#jobBrowserCount").show().text(data.jobs.length);
+              } else {
+                $("#jobBrowserCount").hide();
               }
             }
           checkJobBrowserStatusIdx = window.setTimeout(checkJobBrowserStatus, JB_CHECK_INTERVAL_IN_MILLIS);

+ 6 - 1
desktop/core/src/desktop/templates/common_header_m.mako

@@ -231,9 +231,14 @@ if USE_NEW_EDITOR.get():
       % if 'jobbrowser' in apps:
       var JB_CHECK_INTERVAL_IN_MILLIS = 30000;
       var checkJobBrowserStatusIdx = window.setTimeout(checkJobBrowserStatus, 10);
+      var lastJobBrowserRequest = null;
 
       function checkJobBrowserStatus(){
-        $.post("/jobbrowser/jobs/", {
+        if (lastJobBrowserRequest !== null && lastJobBrowserRequest.readyState < 4) {
+          return;
+        }
+        window.clearTimeout(checkJobBrowserStatusIdx);
+        lastJobBrowserRequest = $.post("/jobbrowser/jobs/", {
             "format": "json",
             "state": "running",
             "user": "${user.username}"

+ 1 - 1
desktop/core/src/desktop/templates/responsive.mako

@@ -282,7 +282,7 @@ ${ hueIcons.symbols() }
         </div>
 
         <div class="compose-action btn-group">
-          <button class="btn" title="${_('Running jobs and workflows')}" data-bind="click: function(){ onePageViewModel.currentApp('jobbrowser') }">${ _('Jobs') } <div class="jobs-badge">10</div></button>
+          <button class="btn" title="${_('Running jobs and workflows')}" data-bind="click: function(){ onePageViewModel.currentApp('jobbrowser') }">${ _('Jobs') } <div id="jobBrowserCount" class="jobs-badge" style="display:none;">0</div></button>
           <button class="btn dropdown-toggle" data-bind="toggle: jobsPanelVisible">
             <span class="caret"></span>
           </button>

+ 1 - 1
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -2241,7 +2241,7 @@ var EditorViewModel = (function() {
       });
       if (vm.editorMode() && self.history().length == 0) {
         self.fetchHistory(function() {
-          self.updateHistory(['starting', 'running'], 20000);
+          self.updateHistory(['starting', 'running'], 30000);
           self.updateHistory(['available'], 60000 * 5);
         });
       }