diff --git a/lib/cluster.js b/lib/cluster.js index 72a3b79a93eec1..da57f5cd08b30a 100644 --- a/lib/cluster.js +++ b/lib/cluster.js @@ -286,6 +286,7 @@ function masterInit() { function createWorkerProcess(id, env) { var workerEnv = util._extend({}, process.env); var execArgv = cluster.settings.execArgv.slice(); + var debugPort = 0; workerEnv = util._extend(workerEnv, env); workerEnv.NODE_UNIQUE_ID = '' + id; @@ -294,8 +295,11 @@ function masterInit() { var match = execArgv[i].match(/^(--debug|--debug-(brk|port))(=\d+)?$/); if (match) { - const debugPort = process.debugPort + debugPortOffset; - ++debugPortOffset; + if (debugPort === 0) { + debugPort = process.debugPort + debugPortOffset; + ++debugPortOffset; + } + execArgv[i] = match[1] + '=' + debugPort; } } diff --git a/test/parallel/test-cluster-debug-port.js b/test/parallel/test-cluster-debug-port.js index 076a59108b09de..efc3fae62e58a4 100644 --- a/test/parallel/test-cluster-debug-port.js +++ b/test/parallel/test-cluster-debug-port.js @@ -23,6 +23,11 @@ if (cluster.isMaster) { portSet: process.debugPort + 1 }).on('exit', checkExitCode); + cluster.setupMaster({ + execArgv: [`--debug-port=${process.debugPort}`, + `--debug=${process.debugPort}`] + }); + console.log('forked worker should have --debug-port, with offset = 2'); cluster.fork({ portSet: process.debugPort + 2