Skip to content

Commit

Permalink
Change nextTick to setImmediate
Browse files Browse the repository at this point in the history
This commit gives "breathing room" allowing code to execute while multiple schedule callbacks are called.

----TEST CODE BLOCK START
var schedule = require('node-schedule');
var util = require('util');
util.log("Scheduling 5000 crons");
for (var i = 0; i < 5000; i++) {
    schedule.scheduleJob('00 45 13 * * *', function(){
    });
}
util.log("Ok");

var p = new Date().getTime();
setInterval(function () {
    p = p + 1000;
    var difference = new Date().getTime() - p;
    util.log("Difference between expected & actual: " + difference)
}, 1000);
----TEST CODE BLOCK END

RESULTS BEFORE:
5000 crons fire @1:30:00 (process.nextTick)
23 Feb 13:28:57 - Difference between expected & actual: 270
23 Feb 13:28:58 - Difference between expected & actual: 274
23 Feb 13:28:59 - Difference between expected & actual: 278
23 Feb 13:31:27 - Difference between expected & actual: 147589
23 Feb 13:31:28 - Difference between expected & actual: 147593
23 Feb 13:31:29 - Difference between expected & actual: 147595
23 Feb 13:31:30 - Difference between expected & actual: 147599

(note huge block as schedules fire)

RESULTS AFTER:
5000 crons fire @13:45:00 (setImmediate)
23 Feb 13:44:55 - Difference between expected & actual: 34
23 Feb 13:44:56 - Difference between expected & actual: 37
23 Feb 13:44:57 - Difference between expected & actual: 41
23 Feb 13:44:58 - Difference between expected & actual: 42
23 Feb 13:44:59 - Difference between expected & actual: 46
23 Feb 13:45:00 - Difference between expected & actual: 63
23 Feb 13:45:01 - Difference between expected & actual: 89
23 Feb 13:45:02 - Difference between expected & actual: 105
23 Feb 13:45:03 - Difference between expected & actual: 115
23 Feb 13:45:04 - Difference between expected & actual: 131

(Note no more block!)
  • Loading branch information
klinquist committed Feb 23, 2016
1 parent 817406a commit 5a96360
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion lib/schedule.js
Expand Up @@ -397,7 +397,7 @@ function runOnDate(date, job) {
var then = date.getTime();

if (then < now) {
process.nextTick(job);
setImmediate(job);
return null;
}

Expand Down

0 comments on commit 5a96360

Please sign in to comment.