scheduler: suspend/resume jobs when apptask is active
the cron job container was holding on to the volume any container changes.
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
exports = module.exports = {
|
||||
sync: sync
|
||||
sync,
|
||||
suspendJobs,
|
||||
resumeJobs
|
||||
};
|
||||
|
||||
let apps = require('./apps.js'),
|
||||
@@ -15,8 +17,18 @@ let apps = require('./apps.js'),
|
||||
_ = require('underscore');
|
||||
|
||||
// appId -> { containerId, schedulerConfig (manifest), cronjobs }
|
||||
var gState = { };
|
||||
let gState = { };
|
||||
let gSuspendedAppIds = new Set(); // suspended because some apptask is running
|
||||
|
||||
function suspendJobs(appId) {
|
||||
debug(`suspendJobs: ${appId}`);
|
||||
gSuspendedAppIds.add(appId);
|
||||
}
|
||||
|
||||
function resumeJobs(appId) {
|
||||
debug(`resumeJobs: ${appId}`);
|
||||
gSuspendedAppIds.delete(appId);
|
||||
}
|
||||
|
||||
function runTask(appId, taskName, callback) {
|
||||
assert.strictEqual(typeof appId, 'string');
|
||||
@@ -26,6 +38,8 @@ function runTask(appId, taskName, callback) {
|
||||
const JOB_MAX_TIME = 30 * 60 * 1000; // 30 minutes
|
||||
const containerName = `${appId}-${taskName}`;
|
||||
|
||||
if (gSuspendedAppIds.has(appId)) return callback();
|
||||
|
||||
apps.get(appId, function (error, app) {
|
||||
if (error) return callback(error);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user