taskmanager: track paused state

This commit is contained in:
Girish Ramakrishnan
2017-01-09 12:26:18 -08:00
parent 4c2a57daf3
commit 35cf9c454a

View File

@@ -18,7 +18,6 @@ var appdb = require('./appdb.js'),
child_process = require('child_process'),
debug = require('debug')('box:taskmanager'),
locker = require('./locker.js'),
platform = require('./platform.js'),
sendFailureLogs = require('./logcollector.js').sendFailureLogs,
util = require('util'),
_ = require('underscore');
@@ -28,6 +27,7 @@ var gPendingTasks = [ ];
var TASK_CONCURRENCY = 3;
var NOOP_CALLBACK = function (error) { if (error) console.error(error); };
var gPaused = true;
// resume app tasks when platform is ready or after a crash
function resumeTasks(callback) {
@@ -37,6 +37,8 @@ function resumeTasks(callback) {
locker.on('unlocked', startNextTask);
gPaused = false;
appdb.getAll(function (error, apps) {
if (error) return callback(error);
@@ -60,6 +62,8 @@ function pauseTasks(callback) {
locker.removeListener('unlocked', startNextTask);
gPaused = true;
async.eachSeries(Object.keys(gActiveTasks), stopAppTask, callback);
}
@@ -98,7 +102,7 @@ function startAppTask(appId, callback) {
return callback(new Error(util.format('Task for %s is already active', appId)));
}
if (!platform.isReadySync()) {
if (gPaused) {
debug('Platform not ready yet, queueing task for %s', appId);
gPendingTasks.push(appId);
return callback();