diff --git a/lib/cluster.js b/lib/cluster.js index df3479950e..6245fc8e1c 100644 --- a/lib/cluster.js +++ b/lib/cluster.js @@ -33,7 +33,7 @@ var debug; if (process.env.NODE_DEBUG && /cluster/.test(process.env.NODE_DEBUG)) { debug = function(x) { var prefix = process.pid + ',' + - (process.env.NODE_WORKER_ID ? 'Worker' : 'Master'); + (process.env.NODE_UNIQUE_ID ? 'Worker' : 'Master'); console.error(prefix, x); }; } else { diff --git a/lib/net.js b/lib/net.js index b03dcf5114..5d86e644b3 100644 --- a/lib/net.js +++ b/lib/net.js @@ -24,6 +24,7 @@ var stream = require('stream'); var timers = require('timers'); var util = require('util'); var assert = require('assert'); +var cluster; function noop() {} @@ -907,8 +908,9 @@ Server.prototype._listen2 = function(address, port, addressType, backlog) { function listen(self, address, port, addressType, backlog) { - if (process.env.NODE_UNIQUE_ID) { - var cluster = require('cluster'); + if (!cluster) cluster = require('cluster'); + + if (cluster.isWorker) { cluster._getServer(self, address, port, addressType, function(handle) { self._handle = handle; self._listen2(address, port, addressType, backlog); diff --git a/src/node.js b/src/node.js index ef0301267f..fd5c6760b7 100644 --- a/src/node.js +++ b/src/node.js @@ -78,6 +78,9 @@ if (process.env.NODE_UNIQUE_ID) { var cluster = NativeModule.require('cluster'); cluster._setupWorker(); + + // Make sure it's not accidentally inherited by child processes. + delete process.env.NODE_UNIQUE_ID; } var Module = NativeModule.require('module'); diff --git a/test/simple/test-cluster-basic.js b/test/simple/test-cluster-basic.js index 74b94b7e59..0d16ee3205 100644 --- a/test/simple/test-cluster-basic.js +++ b/test/simple/test-cluster-basic.js @@ -24,6 +24,9 @@ var common = require('../common'); var assert = require('assert'); var cluster = require('cluster'); +assert.equal('NODE_UNIQUE_ID' in process.env, false, + 'NODE_UNIQUE_ID should be removed on startup'); + function forEach(obj, fn) { Object.keys(obj).forEach(function(name, index) { fn(obj[name], name, index); @@ -40,9 +43,6 @@ if (cluster.isWorker) { else if (cluster.isMaster) { - assert.equal('NODE_UNIQUE_ID' in process.env, false, - 'cluster.isMaster should not be true when NODE_UNIQUE_ID is set'); - var checks = { cluster: { events: {