Browse Source

AMBARI-12215 Service Summary: failed requests to widget metrics. (atkach)

Andrii Tkach 10 years ago
parent
commit
1fefb5f157

+ 3 - 1
ambari-web/app/mixins/common/widgets/widget_mixin.js

@@ -736,6 +736,8 @@ App.WidgetLoadAggregator = Em.Object.create({
     var self = this;
     for (var id in bulks) {
       (function (_request) {
+        if (_request.context.get('state') !== 'inDOM') return;
+
         _request.data.metric_paths = self.arrayUtils.uniqObjectsbyId(_request.data.metric_paths, "id");
         _request.context[_request.startCallName].call(_request.context, _request.data).done(function (response) {
           _request.subRequests.forEach(function (subRequest) {
@@ -749,4 +751,4 @@ App.WidgetLoadAggregator = Em.Object.create({
       })(bulks[id]);
     }
   }
-});
+});

+ 19 - 4
ambari-web/test/mixins/common/widget_mixin_test.js

@@ -458,14 +458,15 @@ describe('App.WidgetLoadAggregator', function () {
   });
 
   describe("#runRequests()", function () {
-    var mock = {
+    var mock = Em.Object.create({
       f1: function () {
         return {
           done: Em.K,
           complete: Em.K
         }
-      }
-    };
+      },
+      state: 'inDOM'
+    });
     beforeEach(function () {
       sinon.stub(aggregator, 'groupRequests', function (requests) {
         return requests;
@@ -476,7 +477,7 @@ describe('App.WidgetLoadAggregator', function () {
       aggregator.groupRequests.restore();
       mock.f1.restore();
     });
-    it("", function () {
+    it("view in DOM", function () {
       var requests = {
         'r1': {
           data: {
@@ -489,5 +490,19 @@ describe('App.WidgetLoadAggregator', function () {
       aggregator.runRequests(requests);
       expect(mock.f1.calledWith(requests['r1'].data)).to.be.true;
     });
+    it("view destroyed", function () {
+      var requests = {
+        'r1': {
+          data: {
+            metric_paths: ['m1', 'm1', 'm2']
+          },
+          context: mock,
+          startCallName: 'f1'
+        }
+      };
+      mock.set('state', 'destroyed');
+      aggregator.runRequests(requests);
+      expect(mock.f1.called).to.be.false;
+    });
   });
 });