Skip to content

Commit

Permalink
cluster: rewrite debug ports consistently
Browse files Browse the repository at this point in the history
When debug flags are passed to clustered applications, the debug
port is rewritten for each worker process to avoid collisions.
Prior to this commit, each debug flag would get a unique value.
This commit reworks the logic to assign the same port value to
all debug flags for a single worker.

PR-URL: #7050
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
  • Loading branch information
cjihrig authored and rvagg committed Jun 2, 2016
1 parent cb2ef35 commit 2132d34
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
8 changes: 6 additions & 2 deletions lib/cluster.js
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,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;
Expand All @@ -307,8 +308,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;
}
}
Expand Down
5 changes: 5 additions & 0 deletions test/parallel/test-cluster-debug-port.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,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
Expand Down

0 comments on commit 2132d34

Please sign in to comment.