From 43ab1b0fd5fbcdb65094d5614ee9db60a660feb9 Mon Sep 17 00:00:00 2001 From: atomizer Date: Sun, 4 Sep 2011 02:19:13 +0400 Subject: [PATCH] manually pull dead workers --- workerpool/workerpool.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/workerpool/workerpool.js b/workerpool/workerpool.js index 22052ef..090d0ef 100644 --- a/workerpool/workerpool.js +++ b/workerpool/workerpool.js @@ -22,7 +22,7 @@ IN THE SOFTWARE. var sys = require("sys"); var child_process = require("child_process"); -function Worker (workerScript) { +function Worker (workerScript, pool) { this.workerScript = workerScript; this.process = child_process.spawn("node", [this.workerScript]); var self = this; @@ -35,6 +35,8 @@ function Worker (workerScript) { }); this.process.addListener('exit', function (code) { sys.debug('worker process exited with code ' + code); + if (pool.pullWorker(self, pool.activeWorkers) || pool.pullWorker(self, pool.idleWorkers)) + sys.debug('manual pull'); if (self.timer) { clearTimeout(self.timer); self.timer = null; @@ -157,7 +159,7 @@ WorkerPool.prototype.checkMaxWorkers = function WorkerPool$checkMaxWorkers () { } WorkerPool.prototype.addWorker = function WorkerPool$addWorker() { if ((this.idleWorkers.length + this.activeWorkers.length) < this.options.maxWorkers) - this.idleWorkers.push(new Worker(this.workerScript)); + this.idleWorkers.push(new Worker(this.workerScript, this)); } WorkerPool.prototype.getWorker = function WorkerPool$getWorker () { if (!this.idleWorkers.length)