Browse Source

AMBARI-6331. After clicking around different services, the alert panel on the service page displays alerts from various services other than the service being viewed (on 2k-node cluster). (onechiporenko)

Oleg Nechiporenko 11 years ago
parent
commit
8165be0559

+ 10 - 1
ambari-web/app/controllers/main/alerts_controller.js

@@ -93,13 +93,21 @@ App.MainAlertsController = Em.Controller.extend({
       return false;
       return false;
     }
     }
   },
   },
+
+  /**
+   * Saved request for alerts
+   * Should be aborted if user navigate away from current page (aborting done in router)
+   * @type {$.ajax|null}
+   */
+  servicesRequest: null,
+
   /**
   /**
    * request alerts from server, which belong to particular service
    * request alerts from server, which belong to particular service
    * @return {Boolean}
    * @return {Boolean}
    */
    */
   getAlertsByService: function () {
   getAlertsByService: function () {
     if (this.get('resourceName')) {
     if (this.get('resourceName')) {
-      App.ajax.send({
+      var request = App.ajax.send({
         name: 'alerts.get_by_service',
         name: 'alerts.get_by_service',
         sender: this,
         sender: this,
         data: {
         data: {
@@ -108,6 +116,7 @@ App.MainAlertsController = Em.Controller.extend({
         success: 'getAlertsSuccessCallback',
         success: 'getAlertsSuccessCallback',
         error: 'getAlertsErrorCallback'
         error: 'getAlertsErrorCallback'
       });
       });
+      this.set('servicesRequest', request);
       return true;
       return true;
     } else {
     } else {
       console.warn('GET Alerts error: serviceName parameter is missing');
       console.warn('GET Alerts error: serviceName parameter is missing');

+ 7 - 1
ambari-web/app/routes/main.js

@@ -27,7 +27,7 @@ module.exports = Em.Route.extend({
     if (router.getAuthenticated()) {
     if (router.getAuthenticated()) {
       App.router.get('mainAdminAccessController').loadShowJobsForUsers().done(function () {
       App.router.get('mainAdminAccessController').loadShowJobsForUsers().done(function () {
         App.router.get('clusterController').loadClusterName(false);
         App.router.get('clusterController').loadClusterName(false);
-        if (App.testMode) {
+        if (App.get('testMode')) {
           router.get('mainController').initialize();
           router.get('mainController').initialize();
         } else {
         } else {
           App.router.get('mainController').checkServerClientVersion().done(function () {
           App.router.get('mainController').checkServerClientVersion().done(function () {
@@ -685,6 +685,12 @@ module.exports = Em.Route.extend({
           } else {
           } else {
             router.transitionTo('services.index');
             router.transitionTo('services.index');
           }
           }
+        },
+        exit: function(router) {
+          var request = router.get('mainAlertsController.servicesRequest');
+          if (request) {
+            request.abort();
+          }
         }
         }
       }),
       }),
       metrics: Em.Route.extend({
       metrics: Em.Route.extend({