Commit b4cec462 authored by Tristan Cavelier's avatar Tristan Cavelier

JIO recovers only writer jobs

parent fb107ab6
/*jslint indent: 2, maxlen: 80, sloppy: true, nomen: true, unparam: true */
/*global setTimeout */
/*global setTimeout, methodType */
function enableJobRecovery(jio, shared, options) {
......@@ -16,8 +16,14 @@ function enableJobRecovery(jio, shared, options) {
function recoverJob(param) {
shared.job_queue.remove(param.id);
shared.job_queue.save();
shared.emit('job', param);
delete param.id;
if (methodType(param.method) === 'writer' ||
param.state === 'ready' ||
param.state === 'running' ||
param.state === 'waiting') {
shared.job_queue.save();
shared.emit('job', param);
}
}
function jobWaiter(id, modified) {
......@@ -45,24 +51,20 @@ function enableJobRecovery(jio, shared, options) {
job_array = shared.job_queue.asArray();
for (i = 0; i < job_array.length; i += 1) {
if (job_array[i].state === 'ready' ||
job_array[i].state === 'running' ||
job_array[i].state === 'waiting') {
delay = numberOrDefault(job_array[i].timeout + recovery_delay,
recovery_delay);
deadline = new Date(job_array[i].modified).getTime() + delay;
if (!isFinite(delay)) {
// 'modified' date is broken
recoverJob(job_array[i]);
} else if (deadline <= Date.now()) {
// deadline reached
recoverJob(job_array[i]);
} else {
// deadline not reached yet
// wait until deadline is reached then check job again
setTimeout(jobWaiter(job_array[i].id, job_array[i].modified),
deadline - Date.now());
}
delay = numberOrDefault(job_array[i].timeout + recovery_delay,
recovery_delay);
deadline = new Date(job_array[i].modified).getTime() + delay;
if (!isFinite(delay)) {
// 'modified' date is broken
recoverJob(job_array[i]);
} else if (deadline <= Date.now()) {
// deadline reached
recoverJob(job_array[i]);
} else {
// deadline not reached yet
// wait until deadline is reached then check job again
setTimeout(jobWaiter(job_array[i].id, job_array[i].modified),
deadline - Date.now());
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment