فهرست منبع

AMBARI-25305: Ambari UI gets into corrupt state after installing a cluster (#3479)

Zhiguo Wu 3 سال پیش
والد
کامیت
7bf8e3bf3b

+ 2 - 0
ambari-web/app/mappers/configs/themes_mapper.js

@@ -74,6 +74,8 @@ App.themesMapper = App.QuickDataMapper.create({
     this.get('subSectionModel').find().clear();
     this.get('subSectionTabModel').find().clear();
     this.get('themeConditionModel').find().clear();
+    App.clearModels([this.get('tabModel')]);
+    App.resetDsStoreTypeMap(this.get('tabModel'));
   },
 
   /**

+ 2 - 17
ambari-web/app/mappers/stack_service_mapper.js

@@ -77,7 +77,7 @@ App.stackServiceMapper = App.QuickDataMapper.create({
 
   mapStackServices: function(json) {
     App.set('isStackServicesLoaded',false);
-    this.clearStackModels();
+    App.clearModels([this.get('model'), this.get('component_model')]);
     App.resetDsStoreTypeMap(App.StackServiceComponent);
     App.resetDsStoreTypeMap(App.StackService);
     this.map(json);
@@ -127,22 +127,7 @@ App.stackServiceMapper = App.QuickDataMapper.create({
     }, this);
     App.store.safeLoadMany(this.get('component_model'), stackServiceComponents);
     App.store.safeLoadMany(model, result);
-  },
-
-  /**
-   * Clean store from already loaded data.
-   **/
-  clearStackModels: function () {
-    var models = [App.StackServiceComponent, App.StackService];
-    models.forEach(function (model) {
-      var records = App.get('store').findAll(model).filterProperty('id');
-      records.forEach(function (rec) {
-        Ember.run(this, function () {
-          rec.deleteRecord();
-          App.store.fastCommit();
-        });
-      }, this);
-    }, this);
   }
+
 });
 

+ 16 - 0
ambari-web/app/utils/helper.js

@@ -1058,6 +1058,22 @@ App.resetDsStoreTypeMap = function(type) {
   }
 };
 
+/**
+ * Clean store from already loaded data.
+ * @param {DS.Model[]} models to clear
+ **/
+App.clearModels = function (models) {
+  models.forEach(function (model) {
+    var records = App.get('store').findAll(model).filterProperty('id');
+    records.forEach(function (rec) {
+      Ember.run(this, function () {
+        rec.deleteRecord();
+        App.store.fastCommit();
+      });
+    }, this);
+  }, this);
+};
+
 App.logger = function() {
 
   var timers = {};

+ 1 - 1
ambari-web/test/mappers/stack_service_mapper_test.js

@@ -228,7 +228,7 @@ describe('App.stackServiceMapper', function () {
       };
 
     beforeEach(function () {
-      App.stackServiceMapper.clearStackModels();
+      App.clearModels([App.StackService, App.StackServiceComponent]);
     });
 
     it('should sort and map data about services with their components', function () {