AMBARI-15049 Sometimes background operations have incorrect order. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/7f3928ba Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7f3928ba Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7f3928ba Branch: refs/heads/branch-dev-patch-upgrade Commit: 7f3928bad958f9c57bb21afd43634e3d9ddfedff Parents: c86964b Author: Andrii Tkach <atk...@hortonworks.com> Authored: Mon Feb 15 17:24:48 2016 +0200 Committer: Andrii Tkach <atk...@hortonworks.com> Committed: Mon Feb 15 17:48:35 2016 +0200 ---------------------------------------------------------------------- .../global/background_operations_controller.js | 15 +++++++++++---- ambari-web/app/utils/host_progress_popup.js | 10 ++++++---- .../global/background_operations_test.js | 16 ++++++++++++++++ 3 files changed, 33 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/7f3928ba/ambari-web/app/controllers/global/background_operations_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/global/background_operations_controller.js b/ambari-web/app/controllers/global/background_operations_controller.js index 76c517c..4156e46 100644 --- a/ambari-web/app/controllers/global/background_operations_controller.js +++ b/ambari-web/app/controllers/global/background_operations_controller.js @@ -261,19 +261,26 @@ App.BackgroundOperationsController = Em.Controller.extend({ this.set('isShowMoreAvailable', countGot >= countIssued); this.set('serviceTimestamp', App.dateTimeWithTimeZone()); }, + isShowMoreAvailable: null, + /** * remove old requests * as API returns 10, or 20 , or 30 ...etc latest request, the requests that absent in response should be removed * @param currentRequestIds */ removeOldRequests: function (currentRequestIds) { - this.get('services').forEach(function (service, index, services) { - if (!currentRequestIds.contains(service.id)) { - services.splice(index, 1); + var services = this.get('services'); + + for (var i = 0, l = services.length; i < l; i++) { + if (!currentRequestIds.contains(services[i].id)) { + services.splice(i, 1); + i--; + l--; } - }); + } }, + /** * identify whether request is running by task counters * @param request http://git-wip-us.apache.org/repos/asf/ambari/blob/7f3928ba/ambari-web/app/utils/host_progress_popup.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/host_progress_popup.js b/ambari-web/app/utils/host_progress_popup.js index 726a96a..395afb5 100644 --- a/ambari-web/app/utils/host_progress_popup.js +++ b/ambari-web/app/utils/host_progress_popup.js @@ -523,11 +523,13 @@ App.HostPopup = Em.Object.create({ * @method removeOldServices */ removeOldServices: function (services, currentServicesIds) { - services.forEach(function (service, index, services) { - if (!currentServicesIds.contains(service.id)) { - services.removeAt(index, 1); + for (var i = 0, l = services.length; i < l; i++) { + if (!currentServicesIds.contains(services[i].id)) { + services.splice(i, 1); + i--; + l--; } - }); + } }, /** http://git-wip-us.apache.org/repos/asf/ambari/blob/7f3928ba/ambari-web/test/controllers/global/background_operations_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/global/background_operations_test.js b/ambari-web/test/controllers/global/background_operations_test.js index 445eeb0..b22c105 100644 --- a/ambari-web/test/controllers/global/background_operations_test.js +++ b/ambari-web/test/controllers/global/background_operations_test.js @@ -310,6 +310,22 @@ describe('App.BackgroundOperationsController', function () { result: [ {id: 2} ] + }, + { + title: 'two old request and two current', + content: { + currentRequestIds: [3, 4], + services: [ + {id: 1}, + {id: 2}, + {id: 3}, + {id: 4} + ] + }, + result: [ + {id: 3}, + {id: 4} + ] } ];