File tree Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -98,6 +98,10 @@ RoundRobinHandle.prototype.remove = function(worker) {
9898} ;
9999
100100RoundRobinHandle . prototype . distribute = function ( err , handle ) {
101+ // If `accept` fails just skip it (handle is undefined)
102+ if ( err ) {
103+ return ;
104+ }
101105 append ( this . handles , handle ) ;
102106 // eslint-disable-next-line node-core/no-array-destructuring
103107 const [ workerEntry ] = this . free ; // this.free is a SafeMap
Original file line number Diff line number Diff line change 1+ // Flags: --expose-internals
2+ 'use strict' ;
3+ const common = require ( '../common' ) ;
4+ const assert = require ( 'assert' ) ;
5+ const net = require ( 'net' ) ;
6+ const cluster = require ( 'cluster' ) ;
7+ const rr = require ( 'internal/cluster/round_robin_handle' ) ;
8+
9+ if ( cluster . isPrimary ) {
10+ const distribute = rr . prototype . distribute ;
11+ rr . prototype . distribute = function ( err , handle ) {
12+ assert . strictEqual ( err , 0 ) ;
13+ handle . close ( ) ;
14+ distribute . call ( this , - 1 , undefined ) ;
15+ } ;
16+ cluster . schedulingPolicy = cluster . SCHED_RR ;
17+ cluster . fork ( ) ;
18+ } else {
19+ const server = net . createServer ( common . mustNotCall ( ) ) ;
20+ server . listen ( 0 , common . mustCall ( ( ) => {
21+
22+ const socket = net . connect ( server . address ( ) . port ) ;
23+
24+ socket . on ( 'close' , common . mustCall ( ( ) => {
25+ server . close ( common . mustCall ( ( ) => {
26+ process . disconnect ( ) ;
27+ } ) ) ;
28+ } ) ) ;
29+ } ) ) ;
30+ }
You can’t perform that action at this time.
0 commit comments