From 2673a9740058096af4acd0f88864a774f1eb5c86 Mon Sep 17 00:00:00 2001 From: Unitech Date: Tue, 8 Feb 2022 10:14:16 +0100 Subject: [PATCH] fix cron check --- lib/Common.js | 5 ++--- lib/Worker.js | 5 ++++- package.json | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/Common.js b/lib/Common.js index f7bd28b2c..8e0eeda0e 100644 --- a/lib/Common.js +++ b/lib/Common.js @@ -329,6 +329,7 @@ Common.retErr = function(e) { Common.sink = {}; Common.sink.determineCron = function(app) { + const cronParser = require('cron-parser') const scheduleJob = require('node-schedule').scheduleJob; if (app.cron_restart == 0 || app.cron_restart == '0') { @@ -339,9 +340,7 @@ Common.sink.determineCron = function(app) { if (app.cron_restart) { try { Common.printOut(cst.PREFIX_MSG + 'cron restart at ' + app.cron_restart); - scheduleJob(app.cron_restart, function() { - Common.printOut(cst.PREFIX_MSG + 'cron pattern for auto restart detected and valid'); - }); + cronParser.parseExpression(app.cron_restart); } catch(ex) { return new Error(`Cron pattern error: ${ex.message}`); } diff --git a/lib/Worker.js b/lib/Worker.js index 885137749..924489d48 100644 --- a/lib/Worker.js +++ b/lib/Worker.js @@ -54,7 +54,10 @@ module.exports = function(God) { return; console.log('[PM2] Deregistering a cron job on:', id); var job = God.CronJobs.get(God.getCronID(id)); - job.cancel(); + + if (job) + job.cancel(); + God.CronJobs.delete(God.getCronID(id)); }; diff --git a/package.json b/package.json index 06023b7aa..89a196990 100644 --- a/package.json +++ b/package.json @@ -177,6 +177,7 @@ "cli-tableau": "^2.0.0", "commander": "2.15.1", "node-schedule": "^2.0.0", + "cron-parser": "~3.5.0", "dayjs": "~1.8.25", "debug": "^4.3.1", "enquirer": "2.3.6",