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

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');
const DataTypes = require('./data-types');
const BelongsTo = require('./associations/belongs-to');
const validator = require('./utils/validator-extras').validator;
const extendModelValidations = require('./utils/validator-extras').extendModelValidations;
/**
* Instance Validator.
......@@ -54,8 +53,6 @@ class InstanceValidator {
* @private
*/
this.inProgress = false;
extendModelValidations(modelInstance);
}
/**
......@@ -310,7 +307,7 @@ class InstanceValidator {
if (!Array.isArray(validatorArgs)) {
if (validatorType === 'isImmutable') {
validatorArgs = [validatorArgs, field];
validatorArgs = [validatorArgs, field, this.modelInstance];
} else if (isLocalizedValidator || validatorType === 'isIP') {
validatorArgs = [];
} else {
......
......@@ -64,19 +64,12 @@ const extensions = {
};
exports.extensions = extensions;
function extendModelValidations(modelInstance) {
const extensions = {
isImmutable(str, param, field) {
return modelInstance.isNewRecord || modelInstance.dataValues[field] === modelInstance._previousDataValues[field];
}
};
_.forEach(extensions, (extend, key) => {
validator[key] = extend;
});
}
exports.extendModelValidations = extendModelValidations;
/** Instance based validators */
validator.isImmutable = function(value, validatorArgs, field, modelInstance) {
return modelInstance.isNewRecord || modelInstance.dataValues[field] === modelInstance._previousDataValues[field];
};
/** Extra validators */
validator.notNull = function(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!