Fixed a bunch of MySQL pooling issues where connections were not properly released or were double-released
This commit is contained in:
parent
06d2712916
commit
0392473ecd
8 changed files with 10 additions and 13 deletions
|
@ -313,8 +313,8 @@ module.exports.send = (id, callback) => {
|
||||||
|
|
||||||
// campaigns marked as status=2 should be picked up by the sending processes
|
// campaigns marked as status=2 should be picked up by the sending processes
|
||||||
connection.query('UPDATE campaigns SET `status`=2, `status_change`=NOW() WHERE id=? LIMIT 1', [id], err => {
|
connection.query('UPDATE campaigns SET `status`=2, `status_change`=NOW() WHERE id=? LIMIT 1', [id], err => {
|
||||||
|
connection.release();
|
||||||
if (err) {
|
if (err) {
|
||||||
connection.release();
|
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
return callback(null, true);
|
return callback(null, true);
|
||||||
|
@ -453,11 +453,10 @@ module.exports.findMail = (responseId, callback) => {
|
||||||
if (err || !rows || !rows.length) {
|
if (err || !rows || !rows.length) {
|
||||||
return checkNext();
|
return checkNext();
|
||||||
}
|
}
|
||||||
|
connection.release();
|
||||||
|
|
||||||
let message = rows[0];
|
let message = rows[0];
|
||||||
message.campaign = campaign.id;
|
message.campaign = campaign.id;
|
||||||
connection.release();
|
|
||||||
|
|
||||||
return callback(null, message);
|
return callback(null, message);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -482,7 +481,6 @@ function createCampaignTables(id, callback) {
|
||||||
connection.query(query, err => {
|
connection.query(query, err => {
|
||||||
connection.release();
|
connection.release();
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
return callback(null, true);
|
return callback(null, true);
|
||||||
|
|
|
@ -328,11 +328,11 @@ function addCustomField(listId, name, defaultValue, type, group, visible, callba
|
||||||
}
|
}
|
||||||
|
|
||||||
connection.query(query, err => {
|
connection.query(query, err => {
|
||||||
connection.release();
|
|
||||||
if (err) {
|
if (err) {
|
||||||
connection.query('DELETE FROM custom_fields WHERE id=? LIMIT 1', [fieldId], () => false);
|
connection.query('DELETE FROM custom_fields WHERE id=? LIMIT 1', [fieldId], () => connection.release());
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
connection.release();
|
||||||
return callback(null, fieldId);
|
return callback(null, fieldId);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -21,7 +21,6 @@ module.exports.list = (start, limit, callback) => {
|
||||||
connection.query('SELECT FOUND_ROWS() AS total', (err, total) => {
|
connection.query('SELECT FOUND_ROWS() AS total', (err, total) => {
|
||||||
connection.release();
|
connection.release();
|
||||||
if (err) {
|
if (err) {
|
||||||
connection.release();
|
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
return callback(null, rows, total && total[0] && total[0].total);
|
return callback(null, rows, total && total[0] && total[0].total);
|
||||||
|
@ -45,8 +44,8 @@ module.exports.quicklist = callback => {
|
||||||
let lists = (rows || []).map(tools.convertKeys);
|
let lists = (rows || []).map(tools.convertKeys);
|
||||||
|
|
||||||
connection.query('SELECT id, list, name FROM segments ORDER BY list, name LIMIT 1000', (err, rows) => {
|
connection.query('SELECT id, list, name FROM segments ORDER BY list, name LIMIT 1000', (err, rows) => {
|
||||||
|
connection.release();
|
||||||
if (err) {
|
if (err) {
|
||||||
connection.release();
|
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +55,6 @@ module.exports.quicklist = callback => {
|
||||||
list.segments = segments.filter(segment => segment.list === list.id);
|
list.segments = segments.filter(segment => segment.list === list.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
connection.release();
|
|
||||||
return callback(null, lists);
|
return callback(null, lists);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -605,7 +605,6 @@ module.exports.subscribers = (id, onlySubscribed, callback) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
db.getConnection((err, connection) => {
|
db.getConnection((err, connection) => {
|
||||||
connection.release();
|
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
@ -618,6 +617,7 @@ module.exports.subscribers = (id, onlySubscribed, callback) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
connection.query(query, queryData.values, (err, rows) => {
|
connection.query(query, queryData.values, (err, rows) => {
|
||||||
|
connection.release();
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ module.exports.list = (listId, start, limit, callback) => {
|
||||||
connection.query('SELECT FOUND_ROWS() AS total', (err, total) => {
|
connection.query('SELECT FOUND_ROWS() AS total', (err, total) => {
|
||||||
connection.release();
|
connection.release();
|
||||||
if (err) {
|
if (err) {
|
||||||
connection.release();
|
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +104,6 @@ module.exports.filter = (listId, request, columns, segmentId, callback) => {
|
||||||
connection.query('SELECT FOUND_ROWS() AS total', (err, filteredTotal) => {
|
connection.query('SELECT FOUND_ROWS() AS total', (err, filteredTotal) => {
|
||||||
connection.release();
|
connection.release();
|
||||||
if (err) {
|
if (err) {
|
||||||
connection.release();
|
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,6 @@ module.exports.quicklist = callback => {
|
||||||
connection.query('SELECT id, name FROM templates ORDER BY name LIMIT 1000', (err, rows) => {
|
connection.query('SELECT id, name FROM templates ORDER BY name LIMIT 1000', (err, rows) => {
|
||||||
connection.release();
|
connection.release();
|
||||||
if (err) {
|
if (err) {
|
||||||
connection.release();
|
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
return callback(null, (rows || []).map(tools.convertKeys));
|
return callback(null, (rows || []).map(tools.convertKeys));
|
||||||
|
|
|
@ -193,6 +193,7 @@ module.exports.sendReset = (username, callback) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!rows.length) {
|
if (!rows.length) {
|
||||||
|
connection.release();
|
||||||
return callback(null, false);
|
return callback(null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,9 @@
|
||||||
"author": "Andris Reinman",
|
"author": "Andris Reinman",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"homepage": "http://mailtrain.org",
|
"homepage": "http://mailtrain.org",
|
||||||
|
"engines" : {
|
||||||
|
"node" : ">=5.0.0"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"grunt": "^0.4.5",
|
"grunt": "^0.4.5",
|
||||||
"grunt-cli": "^1.1.0",
|
"grunt-cli": "^1.1.0",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue