@@ -6,10 +6,14 @@ const {
6
6
ArrayPrototypeSome,
7
7
ObjectKeys,
8
8
ObjectValues,
9
- RegExpPrototypeExec,
10
9
SafeMap,
11
10
StringPrototypeStartsWith,
12
11
} = primordials ;
12
+ const {
13
+ codes : {
14
+ ERR_SOCKET_BAD_PORT ,
15
+ }
16
+ } = require ( 'internal/errors' ) ;
13
17
14
18
const assert = require ( 'internal/assert' ) ;
15
19
const { fork } = require ( 'child_process' ) ;
@@ -18,14 +22,12 @@ const EventEmitter = require('events');
18
22
const RoundRobinHandle = require ( 'internal/cluster/round_robin_handle' ) ;
19
23
const SharedHandle = require ( 'internal/cluster/shared_handle' ) ;
20
24
const Worker = require ( 'internal/cluster/worker' ) ;
25
+ const { getInspectPort, isUsingInspector } = require ( 'internal/util/inspector' ) ;
21
26
const { internal, sendHelper } = require ( 'internal/cluster/utils' ) ;
22
27
const cluster = new EventEmitter ( ) ;
23
28
const intercom = new EventEmitter ( ) ;
24
29
const SCHED_NONE = 1 ;
25
30
const SCHED_RR = 2 ;
26
- const minPort = 1024 ;
27
- const maxPort = 65535 ;
28
- const { validatePort } = require ( 'internal/validators' ) ;
29
31
30
32
module . exports = cluster ;
31
33
@@ -40,7 +42,6 @@ cluster.SCHED_NONE = SCHED_NONE; // Leave it to the operating system.
40
42
cluster . SCHED_RR = SCHED_RR ; // Primary distributes connections.
41
43
42
44
let ids = 0 ;
43
- let debugPortOffset = 1 ;
44
45
let initialized = false ;
45
46
46
47
// XXX(bnoordhuis) Fold cluster.schedulingPolicy into cluster.settings?
@@ -117,29 +118,12 @@ function setupSettingsNT(settings) {
117
118
function createWorkerProcess ( id , env ) {
118
119
const workerEnv = { ...process . env , ...env , NODE_UNIQUE_ID : `${ id } ` } ;
119
120
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
- }
141
121
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 ) } ` ) ;
143
127
}
144
128
145
129
return fork ( cluster . settings . exec , cluster . settings . args , {
0 commit comments