taskmanager: track paused state
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user