@@ -6,10 +6,14 @@ const {
66 ArrayPrototypeSome,
77 ObjectKeys,
88 ObjectValues,
9- RegExpPrototypeExec,
109 SafeMap,
1110 StringPrototypeStartsWith,
1211} = primordials ;
12+ const {
13+ codes : {
14+ ERR_SOCKET_BAD_PORT ,
15+ }
16+ } = require ( 'internal/errors' ) ;
1317
1418const assert = require ( 'internal/assert' ) ;
1519const { fork } = require ( 'child_process' ) ;
@@ -18,14 +22,12 @@ const EventEmitter = require('events');
1822const RoundRobinHandle = require ( 'internal/cluster/round_robin_handle' ) ;
1923const SharedHandle = require ( 'internal/cluster/shared_handle' ) ;
2024const Worker = require ( 'internal/cluster/worker' ) ;
25+ const { getInspectPort, isUsingInspector } = require ( 'internal/util/inspector' ) ;
2126const { internal, sendHelper } = require ( 'internal/cluster/utils' ) ;
2227const cluster = new EventEmitter ( ) ;
2328const intercom = new EventEmitter ( ) ;
2429const SCHED_NONE = 1 ;
2530const SCHED_RR = 2 ;
26- const minPort = 1024 ;
27- const maxPort = 65535 ;
28- const { validatePort } = require ( 'internal/validators' ) ;
2931
3032module . exports = cluster ;
3133
@@ -40,7 +42,6 @@ cluster.SCHED_NONE = SCHED_NONE; // Leave it to the operating system.
4042cluster . SCHED_RR = SCHED_RR ; // Primary distributes connections.
4143
4244let ids = 0 ;
43- let debugPortOffset = 1 ;
4445let initialized = false ;
4546
4647// XXX(bnoordhuis) Fold cluster.schedulingPolicy into cluster.settings?
@@ -117,29 +118,12 @@ function setupSettingsNT(settings) {
117118function createWorkerProcess ( id , env ) {
118119 const workerEnv = { ...process . env , ...env , NODE_UNIQUE_ID : `${ id } ` } ;
119120 const execArgv = [ ...cluster . settings . execArgv ] ;
120- const debugArgRegex = / - - i n s p e c t (?: - b r k | - p o r t ) ? | - - d e b u g - p o r t / ;
121- const nodeOptions = process . env . NODE_OPTIONS || '' ;
122-
123- // TODO(MoLow): Use getInspectPort from internal/util/inspector
124- if ( ArrayPrototypeSome ( execArgv ,
125- ( arg ) => RegExpPrototypeExec ( debugArgRegex , arg ) !== null ) ||
126- RegExpPrototypeExec ( debugArgRegex , nodeOptions ) !== null ) {
127- let inspectPort ;
128- if ( 'inspectPort' in cluster . settings ) {
129- if ( typeof cluster . settings . inspectPort === 'function' )
130- inspectPort = cluster . settings . inspectPort ( ) ;
131- else
132- inspectPort = cluster . settings . inspectPort ;
133-
134- validatePort ( inspectPort ) ;
135- } else {
136- inspectPort = process . debugPort + debugPortOffset ;
137- if ( inspectPort > maxPort )
138- inspectPort = inspectPort - maxPort + minPort - 1 ;
139- debugPortOffset ++ ;
140- }
141121
142- ArrayPrototypePush ( execArgv , `--inspect-port=${ inspectPort } ` ) ;
122+ if ( cluster . settings . inspectPort === null ) {
123+ throw new ERR_SOCKET_BAD_PORT ( 'Port' , null , true ) ;
124+ }
125+ if ( isUsingInspector ( cluster . settings . execArgv ) ) {
126+ ArrayPrototypePush ( execArgv , `--inspect-port=${ getInspectPort ( cluster . settings . inspectPort ) } ` ) ;
143127 }
144128
145129 return fork ( cluster . settings . exec , cluster . settings . args , {
0 commit comments