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 */ /*jslint indent: 2, maxlen: 80, sloppy: true, nomen: true, unparam: true */
/*global setTimeout */ /*global setTimeout, methodType */
function enableJobRecovery(jio, shared, options) { function enableJobRecovery(jio, shared, options) {
...@@ -16,8 +16,14 @@ function enableJobRecovery(jio, shared, options) { ...@@ -16,8 +16,14 @@ function enableJobRecovery(jio, shared, options) {
function recoverJob(param) { function recoverJob(param) {
shared.job_queue.remove(param.id); shared.job_queue.remove(param.id);
shared.job_queue.save(); delete param.id;
shared.emit('job', param); 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) { function jobWaiter(id, modified) {
...@@ -45,24 +51,20 @@ function enableJobRecovery(jio, shared, options) { ...@@ -45,24 +51,20 @@ function enableJobRecovery(jio, shared, options) {
job_array = shared.job_queue.asArray(); job_array = shared.job_queue.asArray();
for (i = 0; i < job_array.length; i += 1) { for (i = 0; i < job_array.length; i += 1) {
if (job_array[i].state === 'ready' || delay = numberOrDefault(job_array[i].timeout + recovery_delay,
job_array[i].state === 'running' || recovery_delay);
job_array[i].state === 'waiting') { deadline = new Date(job_array[i].modified).getTime() + delay;
delay = numberOrDefault(job_array[i].timeout + recovery_delay, if (!isFinite(delay)) {
recovery_delay); // 'modified' date is broken
deadline = new Date(job_array[i].modified).getTime() + delay; recoverJob(job_array[i]);
if (!isFinite(delay)) { } else if (deadline <= Date.now()) {
// 'modified' date is broken // deadline reached
recoverJob(job_array[i]); recoverJob(job_array[i]);
} else if (deadline <= Date.now()) { } else {
// deadline reached // deadline not reached yet
recoverJob(job_array[i]); // wait until deadline is reached then check job again
} else { setTimeout(jobWaiter(job_array[i].id, job_array[i].modified),
// deadline not reached yet deadline - Date.now());
// 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