prevent long-running worker tasks from timing out

pull/1/head
ansuz 4 years ago
parent e0b695d771
commit 90f046f896

@ -81,7 +81,8 @@ Workers.initialize = function (Env, config, _cb) {
}; };
var drained = true; var drained = true;
var sendCommand = function (msg, _cb) { var sendCommand = function (msg, _cb, opt) {
opt = opt || {};
var index = getAvailableWorkerIndex(); var index = getAvailableWorkerIndex();
var state = workers[index]; var state = workers[index];
@ -119,7 +120,9 @@ Workers.initialize = function (Env, config, _cb) {
delete state.tasks[txid]; delete state.tasks[txid];
}))); })));
response.expect(txid, cb, 180000); // default to timing out affter 180s if no explicit timeout is passed
var timeout = typeof(opt.timeout) !== 'undefined'? opt.timeout: 180000;
response.expect(txid, cb, timeout);
state.worker.send(msg); state.worker.send(msg);
}; };
@ -354,13 +357,17 @@ Workers.initialize = function (Env, config, _cb) {
Env.evictInactive = function (cb) { Env.evictInactive = function (cb) {
sendCommand({ sendCommand({
command: 'EVICT_INACTIVE', command: 'EVICT_INACTIVE',
}, cb); }, cb, {
timeout: 1000 * 60 * 300, // time out after 300 minutes (5 hours)
});
}; };
Env.runTasks = function (cb) { Env.runTasks = function (cb) {
sendCommand({ sendCommand({
command: 'RUN_TASKS', command: 'RUN_TASKS',
}, cb); }, cb, {
timeout: 1000 * 60 * 10, // time out after 10 minutes
});
}; };
Env.writeTask = function (time, command, args, cb) { Env.writeTask = function (time, command, args, cb) {

Loading…
Cancel
Save