Fix: "SQLITE_ERROR: too many SQL variables" when loading nodes

This commit is contained in:
baldo 2016-06-26 19:27:09 +02:00
parent a722d32d5a
commit 392e37ab05

View file

@ -20,6 +20,7 @@ angular.module('ffffng')
Constraints, Constraints,
Resources Resources
) { ) {
var MONITORING_STATE_MACS_CHUNK_SIZE = 100;
var MONITORING_MAILS_DB_BATCH_SIZE = 50; var MONITORING_MAILS_DB_BATCH_SIZE = 50;
var MONITORING_OFFLINE_MAILS_SCHEDULE = { var MONITORING_OFFLINE_MAILS_SCHEDULE = {
1: { amount: 3, unit: 'hours' }, 1: { amount: 3, unit: 'hours' },
@ -411,22 +412,28 @@ angular.module('ffffng')
return callback(null, {}); return callback(null, {});
} }
var inCondition = DatabaseUtil.inCondition('mac', macs); async.map(
_.chunk(macs, MONITORING_STATE_MACS_CHUNK_SIZE),
function (subMacs, subCallback) {
var inCondition = DatabaseUtil.inCondition('mac', subMacs);
Database.all( Database.all(
'SELECT * FROM node_state WHERE ' + inCondition.query, 'SELECT * FROM node_state WHERE ' + inCondition.query,
_.concat([], inCondition.params), _.concat([], inCondition.params),
function (err, rows) { subCallback
);
},
function (err, rowsArrays) {
if (err) { if (err) {
return callback(err); return callback(err);
} }
var nodeStateByMac = {}; var nodeStateByMac = {};
_.each(rows, function (row) { _.each(_.flatten(rowsArrays), function (row) {
nodeStateByMac[row.mac] = row; nodeStateByMac[row.mac] = row;
}); });
callback(null, nodeStateByMac); return callback(null, nodeStateByMac);
} }
); );
}, },