From 62afc6c6b9beac1c8da8733888c6a52331ff3095 Mon Sep 17 00:00:00 2001 From: Marco Arrigo Date: Fri, 24 Sep 2021 22:57:02 +0200 Subject: [PATCH] Replaced cron with node-schedule --- lib/Common.js | 4 ++-- lib/Worker.js | 21 ++++++++------------- package.json | 2 +- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/lib/Common.js b/lib/Common.js index 46c11c988..8c2b9fdf9 100644 --- a/lib/Common.js +++ b/lib/Common.js @@ -329,12 +329,12 @@ Common.retErr = function(e) { Common.sink = {}; Common.sink.determineCron = function(app) { - var cronJob = require('cron').CronJob; + const scheduleJob = require('node-schedule').scheduleJob; if (app.cron_restart) { try { Common.printOut(cst.PREFIX_MSG + 'cron restart at ' + app.cron_restart); - new cronJob(app.cron_restart, function() { + scheduleJob(app.cron_restart, function() { Common.printOut(cst.PREFIX_MSG + 'cron pattern for auto restart detected and valid'); }); } catch(ex) { diff --git a/lib/Worker.js b/lib/Worker.js index 0dbf88787..2f110dd24 100644 --- a/lib/Worker.js +++ b/lib/Worker.js @@ -8,7 +8,7 @@ var cst = require('../constants.js'); var eachLimit = require('async/eachLimit'); var debug = require('debug')('pm2:worker'); var domain = require('domain'); -var cronJob = require('cron').CronJob +const scheduleJob = require('node-schedule').scheduleJob; var vCheck = require('./VersionCheck.js') var pkg = require('../package.json') @@ -33,19 +33,14 @@ module.exports = function(God) { var pm_id = pm2_env.pm_id console.log('[PM2][WORKER] Registering a cron job on:', pm_id); - var job = new cronJob({ - cronTime: pm2_env.cron_restart, - onTick: function() { - God.restartProcessId({id: pm_id}, function(err, data) { - if (err) - console.error(err.stack || err); - return; - }); - }, - start: false + var job = scheduleJob(pm2_env.cron_restart, function() { + God.restartProcessId({id: pm_id}, function(err, data) { + if (err) + console.error(err.stack || err); + return; + }); }); - job.start(); God.CronJobs.set(God.getCronID(pm_id), job); } @@ -58,7 +53,7 @@ module.exports = function(God) { return; console.log('[PM2] Deregistering a cron job on:', id); var job = God.CronJobs.get(God.getCronID(id)); - job.stop(); + job.cancel(); God.CronJobs.delete(God.getCronID(id)); }; diff --git a/package.json b/package.json index c8c1154db..11a29c680 100644 --- a/package.json +++ b/package.json @@ -176,7 +176,7 @@ "chokidar": "^3.5.1", "cli-tableau": "^2.0.0", "commander": "2.15.1", - "cron": "1.8.2", + "node-schedule": "^2.0.0", "dayjs": "~1.8.25", "debug": "^4.3.1", "enquirer": "2.3.6",