[pve-devel] [PATCH manager] fix #944: fix race condition in nodeselector
Dominik Csapak
d.csapak at proxmox.com
Mon Apr 25 14:58:12 CEST 2016
in commit
bff3359e1d83436614bb3773f8983997275df8dd
we set the default value of the nodeselector to [] (empty array),
because in the storage edit windows, this is the value
that the field gets after a store load. (to prevent dirtychange)
unfortunately, in the backup edit window, there is a race condition.
there, the store load sets the value to null (not []) and we filter for
!node || ...
sometimes, we filter before the store sets the value to null
(and thus it is still [])
in javascript !null === true, but ![] === false, so we filter out
all the vms if we have a value of []
now, instead of setting [] as the default value, we leave it
and call resetOriginalValue after the store loaded to prevent
the initial issue of isDirty
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
www/manager6/form/NodeSelector.js | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/www/manager6/form/NodeSelector.js b/www/manager6/form/NodeSelector.js
index 8c69430..baf5b0b 100644
--- a/www/manager6/form/NodeSelector.js
+++ b/www/manager6/form/NodeSelector.js
@@ -9,10 +9,6 @@ Ext.define('PVE.form.NodeSelector', {
// only allow those nodes (array)
allowedNodes: undefined,
- // set default value to empty array, else it inits it with
- // null and after the store load it is an empty array,
- // triggering dirtychange
- value: [],
valueField: 'node',
displayField: 'node',
store: {
@@ -96,6 +92,13 @@ Ext.define('PVE.form.NodeSelector', {
}
me.callParent();
- me.getStore().load();
+ me.getStore().load({
+ scope: this,
+ callback: function(records, operation, success) {
+ if (success === true) {
+ this.resetOriginalValue();
+ }
+ }
+ });
}
});
--
2.1.4
More information about the pve-devel
mailing list