Store.destroy() doesn't remove store from stores's cache (Ext.StoreManager.map)
REQUIRED INFORMATION
Ext version tested:Browser versions tested against:Description:- When a store is created it is added to Ext.StoreManager.map by storeId as a key.
- However store.destroy() doesn't remove it from the store's cache. So, the longer the application is used, the more memory is consumed as none of stores is actually released.
- Calling Ext.StoreManager.unregister(store.getStoreId()) explicitly removes store reference from the cache. However I suppose that this should be done in destroy() method as even DataView relies on it when updating store to new (DataView.updateStore()) or am I missing anything?
Steps to reproduce the problem:- Create a store
- Check Ext.StoreManager.map -> store is added
- Call store.destroy()
- Check Ext.StoreManager.map -> store is still there, only isDestroyed flag is set to true
Test Case:
Code:
Ext.define('User', { extend: 'Ext.data.Model',
config: {
fields: [
{name: 'firstName', type: 'string'},
{name: 'lastName', type: 'string'},
{name: 'age', type: 'int'},
{name: 'eyeColor', type: 'string'}
]
}
});
var data = [
{firstName: 'Ed', lastName: 'Spencer'},
{firstName: 'Tommy', lastName: 'Maintz'},
{firstName: 'Aaron', lastName: 'Conran'},
{firstName: 'Jamie', lastName: 'Avins'}
];
var store1 = Ext.create('Ext.data.Store', {
model: 'User',
storeId: 'test-store-1',
data : data
});
Ext.StoreManager.map // 'test-store-1' is added to cache
store1.destroy()
Ext.StoreManager.map // 'test-store-1' is still in cache
////
var store2 = Ext.create('Ext.data.Store', {
model: 'User',
storeId: 'test-store-2',
data : data
});
store2.autoDestroy = true;
var touchTeam = Ext.create('Ext.DataView', {
fullscreen: true,
store: store2,
itemTpl: '{name} is {age} years old'
});
Ext.StoreManager.map // 'test-store-2' is in cache
var store3 = Ext.create('Ext.data.Store', {
model: 'User',
autoDestroy: true,
storeId: 'test-store-3',
data : data
});
touchTeam.setStore(store3)
Ext.StoreManager.map // 'test-store-2' is still in cache though shouldn't, as expected to be destroyed
Thank you in advance,
Regards