@@ -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