node/test/sequential/test-timers-block-eventloop.js
zhangzifa e647c5d7de timers: fix eventloop block
When there are at least 2 timers set by setInterval whose callback
execution are longer than interval, the eventloop will be blocked.

This commit fix the above bug.

PR-URL: https://github.com/nodejs/node/pull/15072
Fixes: https://github.com/nodejs/node/issues/15068
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
2017-10-18 11:59:11 -07:00

23 lines
431 B
JavaScript

'use strict';
const common = require('../common');
const fs = require('fs');
const t1 = setInterval(() => {
common.busyLoop(12);
}, 10);
const t2 = setInterval(() => {
common.busyLoop(15);
}, 10);
const t3 = setTimeout(common.mustNotCall('eventloop blocked!'), 100);
setTimeout(function() {
fs.stat('./nonexistent.txt', (err, stats) => {
clearInterval(t1);
clearInterval(t2);
clearTimeout(t3);
});
}, 50);