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:
Girish Ramakrishnan
2020-11-25 22:16:20 -08:00
parent 1d3d8288a9
commit 1b92ce08aa
2 changed files with 22 additions and 6 deletions

View File

@@ -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);