@eggjs/cluster 3.0.0-beta.4 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,7 +19,9 @@ export async function parseOptions(options) {
19
19
  // compatible customEgg only when call startCluster directly without framework
20
20
  framework: options.framework ?? options.customEgg,
21
21
  });
22
- const egg = await importModule(options.framework);
22
+ const egg = await importModule(options.framework, {
23
+ paths: [options.baseDir],
24
+ });
23
25
  assert(egg.Application, `should define Application in ${options.framework}`);
24
26
  assert(egg.Agent, `should define Agent in ${options.framework}`);
25
27
  if (options.https === true) {
@@ -72,4 +74,4 @@ export async function parseOptions(options) {
72
74
  }
73
75
  return options;
74
76
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBb0Y5RCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FBQyxPQUF3QjtJQUN6RCxPQUFPLEdBQUc7UUFDUixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUN0QixJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3ZDLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLGFBQWE7UUFDYixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjO1FBQy9CLEdBQUcsT0FBTztLQUNYLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxPQUFPLGVBQWUsQ0FBQyxDQUFDO0lBRTFELE9BQU8sQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7UUFDbkMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFRO1FBQ3pCLDhFQUE4RTtRQUM5RSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUztLQUNsRCxDQUFDLENBQUM7SUFFSCxNQUFNLEdBQUcsR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMs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
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBb0Y5RCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FBQyxPQUF3QjtJQUN6RCxPQUFPLEdBQUc7UUFDUixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUN0QixJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3ZDLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLGFBQWE7UUFDYixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjO1FBQy9CLEdBQUcsT0FBTztLQUNYLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxPQUFPLGVBQWUsQ0FBQyxDQUFDO0lBRTFELE9BQU8sQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7UUFDbkMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFRO1FBQ3pCLDhFQUE4RTtRQUM5RSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUztLQUNsRCxDQUFDLENBQUM7SUFFSCxNQUFNLEdBQUcsR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMs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
package/dist/package.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@eggjs/cluster",
3
- "version": "3.0.0-beta.4"
3
+ "version": "3.0.1"
4
4
  }
package/package.json CHANGED
@@ -1,18 +1,17 @@
1
1
  {
2
2
  "name": "@eggjs/cluster",
3
- "version": "3.0.0-beta.4",
3
+ "version": "3.0.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
7
  "description": "cluster manager for egg",
8
- "main": "./dist/commonjs/index.js",
9
8
  "scripts": {
10
9
  "lint": "eslint --cache src test --ext .ts",
11
10
  "pretest": "npm run lint -- --fix && npm run prepublishOnly",
12
11
  "test": "egg-bin test",
13
12
  "preci": "npm run lint && npm run prepublishOnly",
14
- "ci": "egg-bin cov && attw --pack",
15
- "prepublishOnly": "tshy && tshy-after"
13
+ "ci": "egg-bin test",
14
+ "prepublishOnly": "tshy && tshy-after && attw --pack"
16
15
  },
17
16
  "files": [
18
17
  "dist",
@@ -34,7 +33,7 @@
34
33
  },
35
34
  "homepage": "https://github.com/eggjs/cluster#readme",
36
35
  "dependencies": {
37
- "@eggjs/utils": "^4.0.2",
36
+ "@eggjs/utils": "^4.2.1",
38
37
  "@fengmk2/ps-tree": "^2.0.1",
39
38
  "cfork": "^2.0.0",
40
39
  "cluster-reload": "^2.0.0",
@@ -48,18 +47,18 @@
48
47
  },
49
48
  "devDependencies": {
50
49
  "@arethetypeswrong/cli": "^0.17.1",
50
+ "@eggjs/bin": "^7.0.0",
51
+ "@eggjs/mock": "beta",
52
+ "@eggjs/supertest": "^8.1.1",
51
53
  "@eggjs/tsconfig": "1",
52
54
  "@types/mocha": "10",
53
55
  "@types/node": "22",
54
56
  "address": "^2.0.3",
55
57
  "coffee": "^5.5.1",
56
58
  "egg": "beta",
57
- "egg-bin": "6",
58
59
  "egg-errors": "^2.2.0",
59
- "egg-mock": "beta",
60
60
  "eslint": "8",
61
61
  "eslint-config-egg": "14",
62
- "supertest": "^7.0.0",
63
62
  "ts-node": "^10.9.1",
64
63
  "tshy": "3",
65
64
  "tshy-after": "1",
@@ -90,5 +89,6 @@
90
89
  "./package.json": "./package.json"
91
90
  },
92
91
  "types": "./dist/commonjs/index.d.ts",
92
+ "main": "./dist/commonjs/index.js",
93
93
  "module": "./dist/esm/index.js"
94
94
  }
@@ -18,14 +18,17 @@ async function main() {
18
18
  // $ node agent_worker.js options
19
19
  const options = JSON.parse(process.argv[2]) as {
20
20
  framework: string;
21
+ baseDir: string;
21
22
  require?: string[];
22
23
  startMode?: 'process' | 'worker_threads';
23
24
  };
24
25
  if (options.require) {
25
26
  // inject
26
- options.require.forEach(mod => {
27
- require(mod);
28
- });
27
+ for (const mod of options.require) {
28
+ await importModule(mod, {
29
+ paths: [ options.baseDir ],
30
+ });
31
+ }
29
32
  }
30
33
 
31
34
  let AgentWorker: typeof BaseAgentWorker;
@@ -36,7 +39,9 @@ async function main() {
36
39
  }
37
40
 
38
41
  const consoleLogger = new ConsoleLogger({ level: process.env.EGG_AGENT_WORKER_LOGGER_LEVEL });
39
- const { Agent } = await importModule(options.framework);
42
+ const { Agent } = await importModule(options.framework, {
43
+ paths: [ options.baseDir ],
44
+ });
40
45
  debug('new Agent with options %j', options);
41
46
  let agent: any;
42
47
  try {
package/src/app_worker.ts CHANGED
@@ -15,9 +15,10 @@ async function main() {
15
15
  // $ node app_worker.js options-json-string
16
16
  const options = JSON.parse(process.argv[2]) as {
17
17
  framework: string;
18
+ baseDir: string;
18
19
  require?: string[];
19
20
  startMode?: 'process' | 'worker_threads';
20
- port?: number;
21
+ port: number;
21
22
  debugPort?: number;
22
23
  https?: object;
23
24
  sticky?: boolean;
@@ -26,7 +27,9 @@ async function main() {
26
27
  if (options.require) {
27
28
  // inject
28
29
  for (const mod of options.require) {
29
- await importModule(mod);
30
+ await importModule(mod, {
31
+ paths: [ options.baseDir ],
32
+ });
30
33
  }
31
34
  }
32
35
 
@@ -40,7 +43,9 @@ async function main() {
40
43
  const consoleLogger = new ConsoleLogger({
41
44
  level: process.env.EGG_APP_WORKER_LOGGER_LEVEL,
42
45
  });
43
- const { Application } = await importModule(options.framework);
46
+ const { Application } = await importModule(options.framework, {
47
+ paths: [ options.baseDir ],
48
+ });
44
49
  debug('[app_worker:%s] new Application with options %j', process.pid, options);
45
50
  let app: any;
46
51
  try {
@@ -79,9 +84,11 @@ async function main() {
79
84
  ...clusterConfig.https,
80
85
  ...options.https,
81
86
  };
82
- const port = options.port = options.port ?? listenConfig.port;
87
+ const port = app.options.port = options.port || listenConfig.port;
83
88
  const debugPort = options.debugPort;
84
89
  const protocol = (httpsOptions.key && httpsOptions.cert) ? 'https' : 'http';
90
+ debug('[app_worker:%s] listenConfig: %j, real port: %o, protocol: %o, debugPort: %o',
91
+ process.pid, listenConfig, port, protocol, debugPort);
85
92
 
86
93
  AppWorker.send({
87
94
  to: 'master',
@@ -122,6 +129,7 @@ async function main() {
122
129
  app.emit('server', server);
123
130
 
124
131
  if (options.sticky && options.stickyWorkerPort) {
132
+ // only allow connection from localhost
125
133
  server.listen(options.stickyWorkerPort, '127.0.0.1');
126
134
  // Listen to messages was sent from the master. Ignore everything else.
127
135
  AppWorker.on('message', (message: string, connection: Socket) => {
@@ -157,7 +165,15 @@ async function main() {
157
165
  }
158
166
 
159
167
  server.once('listening', () => {
160
- const address = server.address() || { port };
168
+ let address: any = server.address() || { port };
169
+ if (typeof address === 'string') {
170
+ // https://nodejs.org/api/cluster.html#cluster_event_listening_1
171
+ // Unix domain socket
172
+ address = {
173
+ address,
174
+ addressType: -1,
175
+ };
176
+ }
161
177
  debug('[app_worker:%s] listening at %j', process.pid, address);
162
178
  AppWorker.send({
163
179
  to: 'master',
package/src/master.ts CHANGED
@@ -4,6 +4,7 @@ import util from 'node:util';
4
4
  import path from 'node:path';
5
5
  import fs from 'node:fs';
6
6
  import net from 'node:net';
7
+ import { debuglog } from 'node:util';
7
8
  import { ReadyEventEmitter } from 'get-ready';
8
9
  import { detectPort } from 'detect-port';
9
10
  import { reload } from 'cluster-reload';
@@ -23,6 +24,8 @@ import {
23
24
  import { AppThreadWorker, AppThreadUtils as WorkerThreadsAppWorker } from './utils/mode/impl/worker_threads/app.js';
24
25
  import { ClusterWorkerExceptionError } from './error/ClusterWorkerExceptionError.js';
25
26
 
27
+ const debug = debuglog('@eggjs/cluster/master');
28
+
26
29
  export interface MasterOptions extends ParsedClusterOptions {
27
30
  clusterPort?: number;
28
31
  stickyWorkerPort?: number;
@@ -455,7 +458,7 @@ export class Master extends ReadyEventEmitter {
455
458
  address: ListeningAddress;
456
459
  }) {
457
460
  const worker = this.workerManager.getWorker(data.workerId)!;
458
- // this.log('[master] got app_worker#%s:%s app-start event, data: %j', worker.id, worker.workerId, data);
461
+ debug('got app_worker#%s:%s app-start event, data: %j', worker.id, worker.workerId, data);
459
462
 
460
463
  const address = data.address;
461
464
  // worker should listen stickyWorkerPort when sticky mode
@@ -106,7 +106,9 @@ export async function parseOptions(options?: ClusterOptions) {
106
106
  framework: options.framework ?? options.customEgg,
107
107
  });
108
108
 
109
- const egg = await importModule(options.framework);
109
+ const egg = await importModule(options.framework, {
110
+ paths: [ options.baseDir! ],
111
+ });
110
112
  assert(egg.Application, `should define Application in ${options.framework}`);
111
113
  assert(egg.Agent, `should define Agent in ${options.framework}`);
112
114