in actions/event-actions/lib/Database.js [26:62]
this.getWorkerID = function(availableWorkers) {
return new Promise((resolve, reject) => {
var workerID = availableWorkers[0] || 'worker0';
if (availableWorkers.length > 1) {
utilsDB.db.view('triggerViews', 'triggers_by_worker', {reduce: true, group: true}, function (err, body) {
if (!err) {
var triggersByWorker = {};
availableWorkers.forEach(worker => {
triggersByWorker[worker] = 0;
});
body.rows.forEach(row => {
if (row.key in triggersByWorker) {
triggersByWorker[row.key] = row.value;
}
});
// find which worker has the least number of assigned triggers
for (var worker in triggersByWorker) {
if (triggersByWorker[worker] < triggersByWorker[workerID]) {
workerID = worker;
}
}
resolve(workerID);
} else {
reject(err);
}
});
}
else {
resolve(workerID);
}
});
};