Skip to content

Commit a196d2b

Browse files
committed
feat: get clusterPort
Closes eggjs/egg#219
1 parent 26468b7 commit a196d2b

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

lib/master.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const childprocess = require('child_process');
88
const cfork = require('cfork');
99
const ready = require('get-ready');
1010
const debug = require('debug')('egg-cluster');
11+
const detectPort = require('detect-port');
1112
const ConsoleLogger = require('egg-logger').EggConsoleLogger;
1213

1314
const parseOptions = require('./utils/options');
@@ -77,7 +78,17 @@ class Master extends EventEmitter {
7778

7879
this.onExit();
7980

80-
this.forkAgentWorker();
81+
detectPort((err, port) => {
82+
/* istanbul ignore if */
83+
if (err) {
84+
err.name = 'ClusterPortConflictError';
85+
err.message = '[master] try get free port error, ' + err.message;
86+
this.logger.error(err);
87+
return;
88+
}
89+
this.options.clusterPort = port;
90+
this.forkAgentWorker();
91+
});
8192
}
8293

8394
forkAgentWorker() {

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"cfork": "^1.6.0",
3535
"cluster-reload": "^1.0.2",
3636
"debug": "^2.4.5",
37+
"detect-port": "^1.1.0",
3738
"egg-logger": "^1.5.0",
3839
"get-ready": "^1.0.0",
3940
"sendmessage": "^1.1.0"

test/master.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ describe('test/lib/cluster/master.test.js', () => {
2222

2323
app.expect('stdout', /egg start/)
2424
.expect('stdout', /egg started/)
25+
.expect('stdout', /\\"clusterPort\\":\d+/)
2526
.expect('code', 0)
2627
.end(done);
2728
});

0 commit comments

Comments
 (0)