不要怂,就是干,撸起袖子干!

Commit f7585ac0 by Sushant Committed by GitHub

perf: fix memory leak due to instance reference by isImmutable (#9973)

1 parent 6382078a
...@@ -7,7 +7,6 @@ const Promise = require('./promise'); ...@@ -7,7 +7,6 @@ const Promise = require('./promise');
const DataTypes = require('./data-types'); const DataTypes = require('./data-types');
const BelongsTo = require('./associations/belongs-to'); const BelongsTo = require('./associations/belongs-to');
const validator = require('./utils/validator-extras').validator; const validator = require('./utils/validator-extras').validator;
const extendModelValidations = require('./utils/validator-extras').extendModelValidations;
/** /**
* Instance Validator. * Instance Validator.
...@@ -54,8 +53,6 @@ class InstanceValidator { ...@@ -54,8 +53,6 @@ class InstanceValidator {
* @private * @private
*/ */
this.inProgress = false; this.inProgress = false;
extendModelValidations(modelInstance);
} }
/** /**
...@@ -310,7 +307,7 @@ class InstanceValidator { ...@@ -310,7 +307,7 @@ class InstanceValidator {
if (!Array.isArray(validatorArgs)) { if (!Array.isArray(validatorArgs)) {
if (validatorType === 'isImmutable') { if (validatorType === 'isImmutable') {
validatorArgs = [validatorArgs, field]; validatorArgs = [validatorArgs, field, this.modelInstance];
} else if (isLocalizedValidator || validatorType === 'isIP') { } else if (isLocalizedValidator || validatorType === 'isIP') {
validatorArgs = []; validatorArgs = [];
} else { } else {
......
...@@ -64,19 +64,12 @@ const extensions = { ...@@ -64,19 +64,12 @@ const extensions = {
}; };
exports.extensions = extensions; exports.extensions = extensions;
function extendModelValidations(modelInstance) { /** Instance based validators */
const extensions = { validator.isImmutable = function(value, validatorArgs, field, modelInstance) {
isImmutable(str, param, field) { return modelInstance.isNewRecord || modelInstance.dataValues[field] === modelInstance._previousDataValues[field];
return modelInstance.isNewRecord || modelInstance.dataValues[field] === modelInstance._previousDataValues[field]; };
}
};
_.forEach(extensions, (extend, key) => {
validator[key] = extend;
});
}
exports.extendModelValidations = extendModelValidations;
/** Extra validators */
validator.notNull = function(val) { validator.notNull = function(val) {
return ![null, undefined].includes(val); return ![null, undefined].includes(val);
}; };
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!