diff --git a/src/cloudron.js b/src/cloudron.js index 3b26277f2..cdd4f51e5 100644 --- a/src/cloudron.js +++ b/src/cloudron.js @@ -74,7 +74,7 @@ function initialize(callback) { async.series([ settings.initialize, reverseProxy.configureDefaultServer, - cron.initialize, // required for caas heartbeat before activation + cron.startPreActivationJobs, onActivated ], callback); } @@ -83,7 +83,7 @@ function uninitialize(callback) { assert.strictEqual(typeof callback, 'function'); async.series([ - cron.uninitialize, + cron.stopJobs, platform.stop, settings.uninitialize ], callback); @@ -99,7 +99,10 @@ function onActivated(callback) { if (error) return callback(new CloudronError(CloudronError.INTERNAL_ERROR, error)); if (!count) return callback(); // not activated - platform.start(callback); + async.series([ + platform.start, + cron.startPostActivationJobs + ], callback); }); } diff --git a/src/cron.js b/src/cron.js index ee0865ec0..e9fff2ccc 100644 --- a/src/cron.js +++ b/src/cron.js @@ -1,8 +1,10 @@ 'use strict'; exports = module.exports = { - initialize: initialize, - uninitialize: uninitialize + startPostActivationJobs: startPostActivationJobs, + startPreActivationJobs: startPreActivationJobs, + + stopJobs: stopJobs }; var apps = require('./apps.js'), @@ -55,9 +57,7 @@ var AUDIT_SOURCE = { userId: null, username: 'cron' }; // Months: 0-11 // Day of Week: 0-6 -function initialize(callback) { - assert.strictEqual(typeof callback, 'function'); - +function startPreActivationJobs(callback) { if (config.provider() === 'caas') { // hack: send the first heartbeat only after we are running for 60 seconds // required as we end up sending a heartbeat and then cloudron-setup reboots the server @@ -71,6 +71,12 @@ function initialize(callback) { }); } + callback(); +} + +function startPostActivationJobs(callback) { + assert.strictEqual(typeof callback, 'function'); + var randomHourMinute = Math.floor(60*Math.random()); gJobs.alive = new CronJob({ cronTime: '00 ' + randomHourMinute + ' * * * *', // every hour on a random minute @@ -263,7 +269,7 @@ function dynamicDnsChanged(enabled) { } } -function uninitialize(callback) { +function stopJobs(callback) { assert.strictEqual(typeof callback, 'function'); settings.events.removeListener(settings.TIME_ZONE_KEY, recreateJobs);