From 942bdcea94acb7fb09c59eb54fb407b378d138fa Mon Sep 17 00:00:00 2001 From: Fabien Moudurier Date: Mon, 19 Oct 2015 16:08:28 +0200 Subject: [PATCH 1/2] Adding stop in CronManager when server stop --- server/app/server/cron.js | 143 +++++++++++++++++++++----------------- 1 file changed, 81 insertions(+), 62 deletions(-) diff --git a/server/app/server/cron.js b/server/app/server/cron.js index 1bc859b..e271f86 100644 --- a/server/app/server/cron.js +++ b/server/app/server/cron.js @@ -1,63 +1,82 @@ -var CRON = require('cron').CronJob; - -// ------------------------------------------ -// CONSTRUCTOR -// ------------------------------------------ - -var init = function(){ - info('Starting CRONManager ...'); - return CRONManager; -} - -/** - * Starting all jobs from properties - */ -var start = function(){ - var plugins = SARAH.PluginManager.getList(); - for (var i = 0 ; i < plugins.length ; i++){ - var plugin = plugins[i]; - if (!plugin.cron) continue; - job(plugin); - } -} - -var job = function(plugin) { - if (!plugin.cron.time){ return warn('Missing cron time table');} - info("Starting new job %s with cron %s", plugin.name, plugin.cron.time); - - // Build callback - var next = function(data){ - if (!data){ return; } - if (data.error){ SARAH.speak(tts); } - - var tts = SARAH.ScriptManager.speak(data.tts); - if (tts){ SARAH.speak(tts); } - - SARAH.RuleEngine.dispatch(plugin.name, data); - } - - // Create job - var job = new CRON({ - cronTime: plugin.cron.time, - onTick: function() { - info('Cron: %s', plugin.name); - plugin.getInstance().cron(next, plugin.cron, SARAH); - }, - start: true - }); - - // Run once - plugin.getInstance().cron(next, plugin.cron, SARAH); -} - -// ------------------------------------------ -// PUBLIC -// ------------------------------------------ - -var CRONManager = { - 'init' : init, - 'start': start -} - -// Exports Manager +var CRON = require('cron').CronJob; + +// ------------------------------------------ +// CONSTRUCTOR +// ------------------------------------------ + +var init = function(){ + info('Starting CRONManager ...'); + + process.on('SIGINT', function() { + CRONManager.stop(); + process.exit(0); + } + + process.on('uncaughtException', function() { + CRONManager.stop(); + } + + return CRONManager; +} + +/** + * Starting all jobs from properties + */ +var start = function(){ + var plugins = SARAH.PluginManager.getList(); + for (var i = 0 ; i < plugins.length ; i++){ + var plugin = plugins[i]; + if (!plugin.cron) continue; + job(plugin); + } +} + +function stop(){ + var plugins = SARAH.PluginManager.getList(); + for (var i = 0 ; i < plugins.length ; i++){ + var plugin = plugins[i]; + if (!plugin.cronJob) continue; + info("Stoping cron job %s", plugin.name); + plugin.cronJob.stop(); +} + +var job = function(plugin) { + if (!plugin.cron.time){ return warn('Missing cron time table');} + info("Starting new job %s with cron %s", plugin.name, plugin.cron.time); + + // Build callback + var next = function(data){ + if (!data){ return; } + if (data.error){ SARAH.speak(tts); } + + var tts = SARAH.ScriptManager.speak(data.tts); + if (tts){ SARAH.speak(tts); } + + SARAH.RuleEngine.dispatch(plugin.name, data); + } + + // Create job + var job = new CRON({ + cronTime: plugin.cron.time, + onTick: function() { + info('Cron: %s', plugin.name); + plugin.getInstance().cron(next, plugin.cron, SARAH); + }, + start: true + }); + + // Run once + plugin.getInstance().cron(next, plugin.cron, SARAH); +} + +// ------------------------------------------ +// PUBLIC +// ------------------------------------------ + +var CRONManager = { + 'init' : init, + 'start': start +} + +// Exports Manager exports.init = CRONManager.init; \ No newline at end of file From ffdf927d717273e1ad75bb793e5d4fc56a53d584 Mon Sep 17 00:00:00 2001 From: Fabien Moudurier Date: Mon, 19 Oct 2015 17:29:43 +0200 Subject: [PATCH 2/2] fix copy/paste code --- server/app/server/cron.js | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/server/app/server/cron.js b/server/app/server/cron.js index e271f86..fdc14e1 100644 --- a/server/app/server/cron.js +++ b/server/app/server/cron.js @@ -1,3 +1,5 @@ +'use strict'; + var CRON = require('cron').CronJob; // ------------------------------------------ @@ -10,14 +12,14 @@ var init = function(){ process.on('SIGINT', function() { CRONManager.stop(); process.exit(0); - } + }); process.on('uncaughtException', function() { CRONManager.stop(); - } + }); return CRONManager; -} +}; /** * Starting all jobs from properties @@ -26,18 +28,23 @@ var start = function(){ var plugins = SARAH.PluginManager.getList(); for (var i = 0 ; i < plugins.length ; i++){ var plugin = plugins[i]; - if (!plugin.cron) continue; + if (!plugin.cron) { + continue; + } job(plugin); } -} +}; -function stop(){ +function stop() { var plugins = SARAH.PluginManager.getList(); - for (var i = 0 ; i < plugins.length ; i++){ - var plugin = plugins[i]; - if (!plugin.cronJob) continue; - info("Stoping cron job %s", plugin.name); - plugin.cronJob.stop(); + for (var i = 0; i < plugins.length; i++) { + var plugin = plugins[i]; + if (!plugin.cronJob) { + continue; + } + info("Stoping cron job %s", plugin.name); + plugin.cronJob.stop(); + } } var job = function(plugin) { @@ -53,7 +60,7 @@ var job = function(plugin) { if (tts){ SARAH.speak(tts); } SARAH.RuleEngine.dispatch(plugin.name, data); - } + }; // Create job var job = new CRON({ @@ -67,7 +74,7 @@ var job = function(plugin) { // Run once plugin.getInstance().cron(next, plugin.cron, SARAH); -} +}; // ------------------------------------------ // PUBLIC @@ -75,8 +82,9 @@ var job = function(plugin) { var CRONManager = { 'init' : init, - 'start': start -} + 'start': start, + 'stop' : stop +}; // Exports Manager exports.init = CRONManager.init; \ No newline at end of file