implement scheduler
- scan for apps every 10 minutes and schedules tasks
- uses docker.exec
- there is no way to control exec container. docker developers
feel exec is for debugging purposes primarily
- future version will be based on docker run instead
part of #519
This commit is contained in:
16
src/cron.js
16
src/cron.js
@@ -11,6 +11,7 @@ var apps = require('./apps.js'),
|
||||
CronJob = require('cron').CronJob,
|
||||
debug = require('debug')('box:cron'),
|
||||
janitor = require('./janitor.js'),
|
||||
scheduler = require('./scheduler.js'),
|
||||
settings = require('./settings.js'),
|
||||
updateChecker = require('./updatechecker.js');
|
||||
|
||||
@@ -20,7 +21,8 @@ var gAutoupdaterJob = null,
|
||||
gHeartbeatJob = null,
|
||||
gBackupJob = null,
|
||||
gCleanupTokensJob = null,
|
||||
gDockerVolumeCleanerJob = null;
|
||||
gDockerVolumeCleanerJob = null,
|
||||
gSchedulerSyncJob = null;
|
||||
|
||||
var gInitialized = false;
|
||||
|
||||
@@ -101,6 +103,14 @@ function recreateJobs(unusedTimeZone, callback) {
|
||||
timeZone: allSettings[settings.TIME_ZONE_KEY]
|
||||
});
|
||||
|
||||
if (gSchedulerSyncJob) gSchedulerSyncJob.stop();
|
||||
gSchedulerSyncJob = new CronJob({
|
||||
cronTime: '00 */10 * * * *', // every 10 minutes
|
||||
onTick: scheduler.sync,
|
||||
start: true,
|
||||
timeZone: allSettings[settings.TIME_ZONE_KEY]
|
||||
});
|
||||
|
||||
autoupdatePatternChanged(allSettings[settings.AUTOUPDATE_PATTERN_KEY]);
|
||||
|
||||
if (callback) callback();
|
||||
@@ -161,8 +171,10 @@ function uninitialize(callback) {
|
||||
gDockerVolumeCleanerJob.stop();
|
||||
gDockerVolumeCleanerJob = null;
|
||||
|
||||
gSchedulerSyncJob.stop();
|
||||
gSchedulerSyncJob = null;
|
||||
|
||||
gInitialized = false;
|
||||
|
||||
callback();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user