@eggjs/cluster 3.0.0 → 3.1.0-beta.10
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.
- package/README.md +17 -21
- package/dist/dirname.js +11 -0
- package/dist/error/ClusterAgentWorkerError.d.ts +13 -0
- package/dist/error/ClusterAgentWorkerError.js +22 -0
- package/dist/error/ClusterWorkerExceptionError.d.ts +10 -0
- package/dist/error/ClusterWorkerExceptionError.js +17 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +24 -0
- package/dist/master.d.ts +96 -0
- package/dist/master.js +426 -0
- package/dist/utils/messenger.d.ts +96 -0
- package/dist/utils/messenger.js +144 -0
- package/dist/utils/mode/base/agent.d.ts +45 -0
- package/dist/utils/mode/base/agent.js +63 -0
- package/dist/utils/mode/base/app.d.ts +56 -0
- package/dist/utils/mode/base/app.js +77 -0
- package/dist/utils/mode/impl/process/agent.d.ts +22 -0
- package/dist/utils/mode/impl/process/agent.js +93 -0
- package/dist/utils/mode/impl/process/app.d.ts +12 -0
- package/dist/utils/mode/impl/process/app.js +117 -0
- package/dist/utils/mode/impl/worker_threads/agent.d.ts +22 -0
- package/dist/utils/mode/impl/worker_threads/agent.js +79 -0
- package/dist/utils/mode/impl/worker_threads/app.d.ts +13 -0
- package/dist/utils/mode/impl/worker_threads/app.js +128 -0
- package/dist/utils/options.d.ts +83 -0
- package/dist/utils/options.js +56 -0
- package/dist/utils/terminate.js +62 -0
- package/dist/utils/worker_manager.d.ts +32 -0
- package/dist/utils/worker_manager.js +68 -0
- package/package.json +39 -63
- package/dist/commonjs/agent_worker.d.ts +0 -1
- package/dist/commonjs/agent_worker.js +0 -65
- package/dist/commonjs/app_worker.d.ts +0 -1
- package/dist/commonjs/app_worker.js +0 -169
- package/dist/commonjs/dirname.d.ts +0 -1
- package/dist/commonjs/dirname.js +0 -17
- package/dist/commonjs/error/ClusterAgentWorkerError.d.ts +0 -10
- package/dist/commonjs/error/ClusterAgentWorkerError.js +0 -23
- package/dist/commonjs/error/ClusterWorkerExceptionError.d.ts +0 -7
- package/dist/commonjs/error/ClusterWorkerExceptionError.js +0 -18
- package/dist/commonjs/error/index.d.ts +0 -2
- package/dist/commonjs/error/index.js +0 -19
- package/dist/commonjs/index.d.ts +0 -17
- package/dist/commonjs/index.js +0 -37
- package/dist/commonjs/master.d.ts +0 -90
- package/dist/commonjs/master.js +0 -560
- package/dist/commonjs/package.json +0 -3
- package/dist/commonjs/utils/messenger.d.ts +0 -92
- package/dist/commonjs/utils/messenger.js +0 -186
- package/dist/commonjs/utils/mode/base/agent.d.ts +0 -38
- package/dist/commonjs/utils/mode/base/agent.js +0 -68
- package/dist/commonjs/utils/mode/base/app.d.ts +0 -48
- package/dist/commonjs/utils/mode/base/app.js +0 -83
- package/dist/commonjs/utils/mode/impl/process/agent.d.ts +0 -18
- package/dist/commonjs/utils/mode/impl/process/agent.js +0 -108
- package/dist/commonjs/utils/mode/impl/process/app.d.ts +0 -21
- package/dist/commonjs/utils/mode/impl/process/app.js +0 -127
- package/dist/commonjs/utils/mode/impl/worker_threads/agent.d.ts +0 -18
- package/dist/commonjs/utils/mode/impl/worker_threads/agent.js +0 -91
- package/dist/commonjs/utils/mode/impl/worker_threads/app.d.ts +0 -26
- package/dist/commonjs/utils/mode/impl/worker_threads/app.js +0 -142
- package/dist/commonjs/utils/options.d.ts +0 -80
- package/dist/commonjs/utils/options.js +0 -81
- package/dist/commonjs/utils/terminate.d.ts +0 -6
- package/dist/commonjs/utils/terminate.js +0 -89
- package/dist/commonjs/utils/worker_manager.d.ts +0 -25
- package/dist/commonjs/utils/worker_manager.js +0 -76
- package/dist/esm/agent_worker.d.ts +0 -1
- package/dist/esm/agent_worker.js +0 -63
- package/dist/esm/app_worker.d.ts +0 -1
- package/dist/esm/app_worker.js +0 -164
- package/dist/esm/dirname.d.ts +0 -1
- package/dist/esm/dirname.js +0 -11
- package/dist/esm/error/ClusterAgentWorkerError.d.ts +0 -10
- package/dist/esm/error/ClusterAgentWorkerError.js +0 -19
- package/dist/esm/error/ClusterWorkerExceptionError.d.ts +0 -7
- package/dist/esm/error/ClusterWorkerExceptionError.js +0 -14
- package/dist/esm/error/index.d.ts +0 -2
- package/dist/esm/error/index.js +0 -3
- package/dist/esm/index.d.ts +0 -17
- package/dist/esm/index.js +0 -19
- package/dist/esm/master.d.ts +0 -90
- package/dist/esm/master.js +0 -553
- package/dist/esm/package.json +0 -3
- package/dist/esm/utils/messenger.d.ts +0 -92
- package/dist/esm/utils/messenger.js +0 -179
- package/dist/esm/utils/mode/base/agent.d.ts +0 -38
- package/dist/esm/utils/mode/base/agent.js +0 -60
- package/dist/esm/utils/mode/base/app.d.ts +0 -48
- package/dist/esm/utils/mode/base/app.js +0 -75
- package/dist/esm/utils/mode/impl/process/agent.d.ts +0 -18
- package/dist/esm/utils/mode/impl/process/agent.js +0 -103
- package/dist/esm/utils/mode/impl/process/app.d.ts +0 -21
- package/dist/esm/utils/mode/impl/process/app.js +0 -119
- package/dist/esm/utils/mode/impl/worker_threads/agent.d.ts +0 -18
- package/dist/esm/utils/mode/impl/worker_threads/agent.js +0 -83
- package/dist/esm/utils/mode/impl/worker_threads/app.d.ts +0 -26
- package/dist/esm/utils/mode/impl/worker_threads/app.js +0 -137
- package/dist/esm/utils/options.d.ts +0 -80
- package/dist/esm/utils/options.js +0 -75
- package/dist/esm/utils/terminate.d.ts +0 -6
- package/dist/esm/utils/terminate.js +0 -86
- package/dist/esm/utils/worker_manager.d.ts +0 -25
- package/dist/esm/utils/worker_manager.js +0 -72
- package/dist/package.json +0 -4
- package/src/agent_worker.ts +0 -75
- package/src/app_worker.ts +0 -191
- package/src/dirname.ts +0 -11
- package/src/error/ClusterAgentWorkerError.ts +0 -19
- package/src/error/ClusterWorkerExceptionError.ts +0 -17
- package/src/error/index.ts +0 -2
- package/src/index.ts +0 -26
- package/src/master.ts +0 -658
- package/src/utils/messenger.ts +0 -207
- package/src/utils/mode/base/agent.ts +0 -90
- package/src/utils/mode/base/app.ts +0 -119
- package/src/utils/mode/impl/process/agent.ts +0 -119
- package/src/utils/mode/impl/process/app.ts +0 -140
- package/src/utils/mode/impl/worker_threads/agent.ts +0 -99
- package/src/utils/mode/impl/worker_threads/app.ts +0 -164
- package/src/utils/options.ts +0 -169
- package/src/utils/terminate.ts +0 -97
- package/src/utils/worker_manager.ts +0 -87
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.terminate = terminate;
|
|
4
|
-
const node_util_1 = require("node:util");
|
|
5
|
-
const promises_1 = require("node:timers/promises");
|
|
6
|
-
const node_events_1 = require("node:events");
|
|
7
|
-
const ps_tree_1 = require("@fengmk2/ps-tree");
|
|
8
|
-
const debug = (0, node_util_1.debuglog)('@eggjs/cluster/utils/terminate');
|
|
9
|
-
async function terminate(subProcess, timeout) {
|
|
10
|
-
const pid = subProcess.process?.pid ?? subProcess.pid;
|
|
11
|
-
const childPids = await getChildPids(pid);
|
|
12
|
-
await Promise.all([
|
|
13
|
-
killProcess(subProcess, timeout),
|
|
14
|
-
killChildren(childPids, timeout),
|
|
15
|
-
]);
|
|
16
|
-
}
|
|
17
|
-
// kill process, if SIGTERM not work, try SIGKILL
|
|
18
|
-
async function killProcess(subProcess, timeout) {
|
|
19
|
-
// https://github.com/nodejs/node/pull/34312
|
|
20
|
-
(subProcess.process ?? subProcess).kill('SIGTERM');
|
|
21
|
-
await Promise.race([
|
|
22
|
-
(0, node_events_1.once)(subProcess, 'exit'),
|
|
23
|
-
(0, promises_1.setTimeout)(timeout),
|
|
24
|
-
]);
|
|
25
|
-
if (subProcess.killed) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
// SIGKILL: http://man7.org/linux/man-pages/man7/signal.7.html
|
|
29
|
-
// worker: https://github.com/nodejs/node/blob/master/lib/internal/cluster/worker.js#L22
|
|
30
|
-
// subProcess.kill is wrapped to subProcess.destroy, it will wait to disconnected.
|
|
31
|
-
(subProcess.process ?? subProcess).kill('SIGKILL');
|
|
32
|
-
}
|
|
33
|
-
// kill all children processes, if SIGTERM not work, try SIGKILL
|
|
34
|
-
async function killChildren(childrenPids, timeout) {
|
|
35
|
-
if (childrenPids.length === 0) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
kill(childrenPids, 'SIGTERM');
|
|
39
|
-
const start = Date.now();
|
|
40
|
-
// if timeout is 1000, it will check twice.
|
|
41
|
-
const checkInterval = 400;
|
|
42
|
-
let unterminated = [];
|
|
43
|
-
while (Date.now() - start < timeout - checkInterval) {
|
|
44
|
-
await (0, promises_1.setTimeout)(checkInterval);
|
|
45
|
-
unterminated = getUnterminatedProcesses(childrenPids);
|
|
46
|
-
if (unterminated.length === 0) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
kill(unterminated, 'SIGKILL');
|
|
51
|
-
}
|
|
52
|
-
async function getChildPids(pid) {
|
|
53
|
-
let childrenPids = [];
|
|
54
|
-
try {
|
|
55
|
-
const children = await (0, ps_tree_1.pstree)(pid);
|
|
56
|
-
childrenPids = children.map(c => parseInt(c.PID));
|
|
57
|
-
}
|
|
58
|
-
catch (err) {
|
|
59
|
-
// if get children error, just ignore it
|
|
60
|
-
debug('pstree %s error: %s, ignore it', pid, err);
|
|
61
|
-
}
|
|
62
|
-
return childrenPids;
|
|
63
|
-
}
|
|
64
|
-
function kill(pids, signal) {
|
|
65
|
-
for (const pid of pids) {
|
|
66
|
-
try {
|
|
67
|
-
process.kill(pid, signal);
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
// ignore
|
|
71
|
-
debug('kill %s error: %s, signal: %s, ignore it', pid, err, signal);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function getUnterminatedProcesses(pids) {
|
|
76
|
-
return pids.filter(pid => {
|
|
77
|
-
try {
|
|
78
|
-
// success means it's still alive
|
|
79
|
-
process.kill(pid, 0);
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
// error means it's dead
|
|
84
|
-
debug('kill %s error: %s, it still alive', pid, err);
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3Rlcm1pbmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLDhCQU9DO0FBbkJELHlDQUFxQztBQUNyQyxtREFBMkQ7QUFDM0QsNkNBQW1DO0FBRW5DLDhDQUEwQztBQUUxQyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQU1sRCxLQUFLLFVBQVUsU0FBUyxDQUFDLFVBQXNCLEVBQUUsT0FBZTtJQUNyRSxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3RELE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUksQ0FBQyxDQUFDO0lBQzNDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNoQixXQUFXLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztRQUNoQyxZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztLQUNqQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsaURBQWlEO0FBQ2pELEtBQUssVUFBVSxXQUFXLENBQUMsVUFBc0IsRUFBRSxPQUFlO0lBQ2hFLDRDQUE0QztJQUM1QyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztRQUNqQixJQUFBLGtCQUFJLEVBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQztRQUN4QixJQUFBLHFCQUFLLEVBQUMsT0FBTyxDQUFDO0tBQ2YsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEIsT0FBTztJQUNULENBQUM7SUFDRCw4REFBOEQ7SUFDOUQsd0ZBQXdGO0lBQ3hGLGtGQUFrRjtJQUNsRixDQUFDLFVBQVUs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
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'node:events';
|
|
2
|
-
import { BaseAgentWorker } from './mode/base/agent.js';
|
|
3
|
-
import { BaseAppWorker } from './mode/base/app.js';
|
|
4
|
-
export declare class WorkerManager extends EventEmitter {
|
|
5
|
-
agent: BaseAgentWorker | null;
|
|
6
|
-
workers: Map<number, BaseAppWorker<import("worker_threads").Worker | import("cluster").Worker>>;
|
|
7
|
-
exception: number;
|
|
8
|
-
timer: NodeJS.Timeout;
|
|
9
|
-
constructor();
|
|
10
|
-
getWorkers(): number[];
|
|
11
|
-
setAgent(agent: BaseAgentWorker): void;
|
|
12
|
-
getAgent(): BaseAgentWorker<import("child_process").ChildProcess | import("worker_threads").Worker> | null;
|
|
13
|
-
deleteAgent(): void;
|
|
14
|
-
setWorker(worker: BaseAppWorker): void;
|
|
15
|
-
getWorker(workerId: number): BaseAppWorker<import("worker_threads").Worker | import("cluster").Worker> | undefined;
|
|
16
|
-
deleteWorker(workerId: number): void;
|
|
17
|
-
listWorkerIds(): number[];
|
|
18
|
-
listWorkers(): BaseAppWorker<import("worker_threads").Worker | import("cluster").Worker>[];
|
|
19
|
-
getListeningWorkerIds(): number[];
|
|
20
|
-
count(): {
|
|
21
|
-
agent: number;
|
|
22
|
-
worker: number;
|
|
23
|
-
};
|
|
24
|
-
startCheck(): void;
|
|
25
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WorkerManager = void 0;
|
|
4
|
-
const node_events_1 = require("node:events");
|
|
5
|
-
// worker manager to record agent and worker forked by egg-cluster
|
|
6
|
-
// can do some check stuff here to monitor the healthy
|
|
7
|
-
class WorkerManager extends node_events_1.EventEmitter {
|
|
8
|
-
agent;
|
|
9
|
-
workers = new Map();
|
|
10
|
-
exception = 0;
|
|
11
|
-
timer;
|
|
12
|
-
constructor() {
|
|
13
|
-
super();
|
|
14
|
-
this.agent = null;
|
|
15
|
-
}
|
|
16
|
-
getWorkers() {
|
|
17
|
-
return Array.from(this.workers.keys());
|
|
18
|
-
}
|
|
19
|
-
setAgent(agent) {
|
|
20
|
-
this.agent = agent;
|
|
21
|
-
}
|
|
22
|
-
getAgent() {
|
|
23
|
-
return this.agent;
|
|
24
|
-
}
|
|
25
|
-
deleteAgent() {
|
|
26
|
-
this.agent = null;
|
|
27
|
-
}
|
|
28
|
-
setWorker(worker) {
|
|
29
|
-
this.workers.set(worker.workerId, worker);
|
|
30
|
-
}
|
|
31
|
-
getWorker(workerId) {
|
|
32
|
-
return this.workers.get(workerId);
|
|
33
|
-
}
|
|
34
|
-
deleteWorker(workerId) {
|
|
35
|
-
this.workers.delete(workerId);
|
|
36
|
-
}
|
|
37
|
-
listWorkerIds() {
|
|
38
|
-
return Array.from(this.workers.keys());
|
|
39
|
-
}
|
|
40
|
-
listWorkers() {
|
|
41
|
-
return Array.from(this.workers.values());
|
|
42
|
-
}
|
|
43
|
-
getListeningWorkerIds() {
|
|
44
|
-
const keys = [];
|
|
45
|
-
for (const [id, worker] of this.workers.entries()) {
|
|
46
|
-
if (worker.state === 'listening') {
|
|
47
|
-
keys.push(id);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return keys;
|
|
51
|
-
}
|
|
52
|
-
count() {
|
|
53
|
-
return {
|
|
54
|
-
agent: this.agent?.status === 'started' ? 1 : 0,
|
|
55
|
-
worker: this.listWorkerIds().length,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
// check agent and worker must both alive
|
|
59
|
-
// if exception appear 3 times, emit an exception event
|
|
60
|
-
startCheck() {
|
|
61
|
-
this.timer = setInterval(() => {
|
|
62
|
-
const count = this.count();
|
|
63
|
-
if (count.agent > 0 && count.worker > 0) {
|
|
64
|
-
this.exception = 0;
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
this.exception++;
|
|
68
|
-
if (this.exception >= 3) {
|
|
69
|
-
this.emit('exception', count);
|
|
70
|
-
clearInterval(this.timer);
|
|
71
|
-
}
|
|
72
|
-
}, 10000);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
exports.WorkerManager = WorkerManager;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX21hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvd29ya2VyX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTJDO0FBSTNDLGtFQUFrRTtBQUNsRSxzREFBc0Q7QUFDdEQsTUFBYSxhQUFjLFNBQVEsMEJBQVk7SUFDN0MsS0FBSyxDQUF5QjtJQUM5QixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7SUFDM0MsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLEtBQUssQ0FBaUI7SUFFdEI7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQXNCO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFxQjtRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxNQUFNLENBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNwRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU07U0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsdURBQXVEO0lBQ3ZELFVBQVU7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzlCLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7Q0FDRjtBQWhGRCxzQ0FnRkMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/esm/agent_worker.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { debuglog } from 'node:util';
|
|
2
|
-
import { EggConsoleLogger as ConsoleLogger } from 'egg-logger';
|
|
3
|
-
import { importModule } from '@eggjs/utils';
|
|
4
|
-
import { AgentThreadWorker } from './utils/mode/impl/worker_threads/agent.js';
|
|
5
|
-
import { AgentProcessWorker } from './utils/mode/impl/process/agent.js';
|
|
6
|
-
const debug = debuglog('@eggjs/cluster/agent_worker');
|
|
7
|
-
/**
|
|
8
|
-
* agent worker is child_process forked by master.
|
|
9
|
-
*
|
|
10
|
-
* agent worker only exit in two cases:
|
|
11
|
-
* - receive signal SIGTERM, exit code 0 (exit gracefully)
|
|
12
|
-
* - receive disconnect event, exit code 110 (maybe master exit in accident)
|
|
13
|
-
*/
|
|
14
|
-
async function main() {
|
|
15
|
-
// $ node agent_worker.js options
|
|
16
|
-
const options = JSON.parse(process.argv[2]);
|
|
17
|
-
if (options.require) {
|
|
18
|
-
// inject
|
|
19
|
-
options.require.forEach(mod => {
|
|
20
|
-
require(mod);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
let AgentWorker;
|
|
24
|
-
if (options.startMode === 'worker_threads') {
|
|
25
|
-
AgentWorker = AgentThreadWorker;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
AgentWorker = AgentProcessWorker;
|
|
29
|
-
}
|
|
30
|
-
const consoleLogger = new ConsoleLogger({ level: process.env.EGG_AGENT_WORKER_LOGGER_LEVEL });
|
|
31
|
-
const { Agent } = await importModule(options.framework);
|
|
32
|
-
debug('new Agent with options %j', options);
|
|
33
|
-
let agent;
|
|
34
|
-
try {
|
|
35
|
-
agent = new Agent(options);
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
consoleLogger.error(err);
|
|
39
|
-
throw err;
|
|
40
|
-
}
|
|
41
|
-
function startErrorHandler(err) {
|
|
42
|
-
consoleLogger.error(err);
|
|
43
|
-
consoleLogger.error('[agent_worker] start error, exiting with code:1');
|
|
44
|
-
AgentWorker.kill();
|
|
45
|
-
}
|
|
46
|
-
agent.ready((err) => {
|
|
47
|
-
// don't send started message to master when start error
|
|
48
|
-
if (err) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
agent.removeListener('error', startErrorHandler);
|
|
52
|
-
AgentWorker.send({ action: 'agent-start', to: 'master' });
|
|
53
|
-
});
|
|
54
|
-
// exit if agent start error
|
|
55
|
-
agent.once('error', startErrorHandler);
|
|
56
|
-
AgentWorker.gracefulExit({
|
|
57
|
-
logger: consoleLogger,
|
|
58
|
-
label: 'agent_worker',
|
|
59
|
-
beforeExit: () => agent.close(),
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
main();
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRfd29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FnZW50X3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV4RSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUV0RDs7Ozs7O0dBTUc7QUFDSCxLQUFLLFVBQVUsSUFBSTtJQUNqQixpQ0FBaUM7SUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUl6QyxDQUFDO0lBQ0YsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEIsU0FBUztRQUNULE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBbUMsQ0FBQztJQUN4QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUMzQyxXQUFXLEdBQUcsaUJBQXdCLENBQUM7SUFDekMsQ0FBQztTQUFNLENBQUM7UUFDTixXQUFXLEdBQUcsa0JBQXlCLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEQsS0FBSyxDQUFDLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLElBQUksS0FBVSxDQUFDO0lBQ2YsSUFBSSxDQUFDO1FBQ0gsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixNQUFNLEdBQUcsQ0FBQztJQUNaLENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUFDLEdBQVU7UUFDbkMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixhQUFhLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDdkUsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7UUFDMUIsd0RBQXdEO1FBQ3hELElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixPQUFPO1FBQ1QsQ0FBQztRQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDakQsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFFSCw0QkFBNEI7SUFDNUIsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUV2QyxXQUFXLENBQUMsWUFBWSxDQUFDO1FBQ3ZCLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLEtBQUssRUFBRSxjQUFjO1FBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO0tBQ2hDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyJ9
|
package/dist/esm/app_worker.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/esm/app_worker.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import { createServer as createHttpServer } from 'node:http';
|
|
3
|
-
import { createServer as createHttpsServer } from 'node:https';
|
|
4
|
-
import { debuglog } from 'node:util';
|
|
5
|
-
import { EggConsoleLogger as ConsoleLogger } from 'egg-logger';
|
|
6
|
-
import { importModule } from '@eggjs/utils';
|
|
7
|
-
import { AppThreadWorker } from './utils/mode/impl/worker_threads/app.js';
|
|
8
|
-
import { AppProcessWorker } from './utils/mode/impl/process/app.js';
|
|
9
|
-
const debug = debuglog('@eggjs/cluster/app_worker');
|
|
10
|
-
async function main() {
|
|
11
|
-
// $ node app_worker.js options-json-string
|
|
12
|
-
const options = JSON.parse(process.argv[2]);
|
|
13
|
-
if (options.require) {
|
|
14
|
-
// inject
|
|
15
|
-
for (const mod of options.require) {
|
|
16
|
-
await importModule(mod);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
let AppWorker;
|
|
20
|
-
if (options.startMode === 'worker_threads') {
|
|
21
|
-
AppWorker = AppThreadWorker;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
AppWorker = AppProcessWorker;
|
|
25
|
-
}
|
|
26
|
-
const consoleLogger = new ConsoleLogger({
|
|
27
|
-
level: process.env.EGG_APP_WORKER_LOGGER_LEVEL,
|
|
28
|
-
});
|
|
29
|
-
const { Application } = await importModule(options.framework);
|
|
30
|
-
debug('[app_worker:%s] new Application with options %j', process.pid, options);
|
|
31
|
-
let app;
|
|
32
|
-
try {
|
|
33
|
-
app = new Application(options);
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
consoleLogger.error(err);
|
|
37
|
-
throw err;
|
|
38
|
-
}
|
|
39
|
-
app.ready(startServer);
|
|
40
|
-
function exitProcess() {
|
|
41
|
-
// Use SIGTERM kill process, ensure trigger the gracefulExit
|
|
42
|
-
AppWorker.kill();
|
|
43
|
-
}
|
|
44
|
-
// exit if worker start timeout
|
|
45
|
-
app.once('startTimeout', startTimeoutHandler);
|
|
46
|
-
function startTimeoutHandler() {
|
|
47
|
-
consoleLogger.error('[app_worker] start timeout, exiting with code:1');
|
|
48
|
-
exitProcess();
|
|
49
|
-
}
|
|
50
|
-
function startServer(err) {
|
|
51
|
-
if (err) {
|
|
52
|
-
consoleLogger.error(err);
|
|
53
|
-
consoleLogger.error('[app_worker] start error, exiting with code:1');
|
|
54
|
-
exitProcess();
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const clusterConfig = app.config.cluster ?? {};
|
|
58
|
-
const listenConfig = clusterConfig.listen ?? {};
|
|
59
|
-
const httpsOptions = {
|
|
60
|
-
...clusterConfig.https,
|
|
61
|
-
...options.https,
|
|
62
|
-
};
|
|
63
|
-
const port = app.options.port = options.port || listenConfig.port;
|
|
64
|
-
const debugPort = options.debugPort;
|
|
65
|
-
const protocol = (httpsOptions.key && httpsOptions.cert) ? 'https' : 'http';
|
|
66
|
-
debug('[app_worker:%s] listenConfig: %j, real port: %o, protocol: %o, debugPort: %o', process.pid, listenConfig, port, protocol, debugPort);
|
|
67
|
-
AppWorker.send({
|
|
68
|
-
to: 'master',
|
|
69
|
-
action: 'realport',
|
|
70
|
-
data: {
|
|
71
|
-
port,
|
|
72
|
-
protocol,
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
app.removeListener('startTimeout', startTimeoutHandler);
|
|
76
|
-
let server;
|
|
77
|
-
let debugPortServer;
|
|
78
|
-
// https config
|
|
79
|
-
if (protocol === 'https') {
|
|
80
|
-
httpsOptions.key = fs.readFileSync(httpsOptions.key);
|
|
81
|
-
httpsOptions.cert = fs.readFileSync(httpsOptions.cert);
|
|
82
|
-
httpsOptions.ca = httpsOptions.ca && fs.readFileSync(httpsOptions.ca);
|
|
83
|
-
server = createHttpsServer(httpsOptions, app.callback());
|
|
84
|
-
if (debugPort) {
|
|
85
|
-
debugPortServer = createHttpServer(app.callback());
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
server = createHttpServer(app.callback());
|
|
90
|
-
if (debugPort) {
|
|
91
|
-
debugPortServer = server;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
server.once('error', (err) => {
|
|
95
|
-
consoleLogger.error('[app_worker] server got error: %s, code: %s', err.message, err.code);
|
|
96
|
-
exitProcess();
|
|
97
|
-
});
|
|
98
|
-
// emit `server` event in app
|
|
99
|
-
app.emit('server', server);
|
|
100
|
-
if (options.sticky && options.stickyWorkerPort) {
|
|
101
|
-
// only allow connection from localhost
|
|
102
|
-
server.listen(options.stickyWorkerPort, '127.0.0.1');
|
|
103
|
-
// Listen to messages was sent from the master. Ignore everything else.
|
|
104
|
-
AppWorker.on('message', (message, connection) => {
|
|
105
|
-
if (message !== 'sticky-session:connection') {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
// Emulate a connection event on the server by emitting the
|
|
109
|
-
// event with the connection the master sent us.
|
|
110
|
-
server.emit('connection', connection);
|
|
111
|
-
connection.resume();
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
if (listenConfig.path) {
|
|
116
|
-
server.listen(listenConfig.path);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
if (typeof port !== 'number') {
|
|
120
|
-
consoleLogger.error('[app_worker:%s] port should be number, but got %s(%s)', process.pid, port, typeof port);
|
|
121
|
-
exitProcess();
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
const args = [port];
|
|
125
|
-
if (listenConfig.hostname) {
|
|
126
|
-
args.push(listenConfig.hostname);
|
|
127
|
-
}
|
|
128
|
-
debug('listen options %j', args);
|
|
129
|
-
server.listen(...args);
|
|
130
|
-
}
|
|
131
|
-
if (debugPortServer) {
|
|
132
|
-
debug('listen on debug port: %s', debugPort);
|
|
133
|
-
debugPortServer.listen(debugPort);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
server.once('listening', () => {
|
|
137
|
-
let address = server.address() || { port };
|
|
138
|
-
if (typeof address === 'string') {
|
|
139
|
-
// https://nodejs.org/api/cluster.html#cluster_event_listening_1
|
|
140
|
-
// Unix domain socket
|
|
141
|
-
address = {
|
|
142
|
-
address,
|
|
143
|
-
addressType: -1,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
debug('[app_worker:%s] listening at %j', process.pid, address);
|
|
147
|
-
AppWorker.send({
|
|
148
|
-
to: 'master',
|
|
149
|
-
action: 'app-start',
|
|
150
|
-
data: {
|
|
151
|
-
address,
|
|
152
|
-
workerId: AppWorker.workerId,
|
|
153
|
-
},
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
AppWorker.gracefulExit({
|
|
158
|
-
logger: consoleLogger,
|
|
159
|
-
label: 'app_worker',
|
|
160
|
-
beforeExit: () => app.close(),
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
main();
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwX3dvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHBfd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsWUFBWSxJQUFJLGdCQUFnQixFQUFlLE1BQU0sV0FBVyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLElBQUksaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBRXBELEtBQUssVUFBVSxJQUFJO0lBQ2pCLDJDQUEyQztJQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBU3pDLENBQUM7SUFDRixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixTQUFTO1FBQ1QsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEMsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFNBQStCLENBQUM7SUFDcEMsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLGdCQUFnQixFQUFFLENBQUM7UUFDM0MsU0FBUyxHQUFHLGVBQXNCLENBQUM7SUFDckMsQ0FBQztTQUFN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
|
package/dist/esm/dirname.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function getSrcDirname(): string;
|
package/dist/esm/dirname.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { fileURLToPath } from 'node:url';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
export function getSrcDirname() {
|
|
4
|
-
if (typeof __dirname !== 'undefined') {
|
|
5
|
-
return __dirname;
|
|
6
|
-
}
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
8
|
-
// @ts-ignore
|
|
9
|
-
return path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlybmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaXJuYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE1BQU0sVUFBVSxhQUFhO0lBQzNCLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDckMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELDZEQUE2RDtJQUM3RCxhQUFhO0lBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQyJ9
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export class ClusterAgentWorkerError extends Error {
|
|
2
|
-
id;
|
|
3
|
-
/**
|
|
4
|
-
* pid in process mode
|
|
5
|
-
* tid in worker_threads mode
|
|
6
|
-
*/
|
|
7
|
-
workerId;
|
|
8
|
-
status;
|
|
9
|
-
constructor(id, workerId, status, error) {
|
|
10
|
-
const message = `Got agent worker error: ${error.message}`;
|
|
11
|
-
super(message, { cause: error });
|
|
12
|
-
this.name = this.constructor.name;
|
|
13
|
-
this.id = id;
|
|
14
|
-
this.workerId = workerId;
|
|
15
|
-
this.status = status;
|
|
16
|
-
Error.captureStackTrace(this, this.constructor);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckFnZW50V29ya2VyRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXJyb3IvQ2x1c3RlckFnZW50V29ya2VyRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHVCQUF3QixTQUFRLEtBQUs7SUFDaEQsRUFBRSxDQUFTO0lBQ1g7OztPQUdHO0lBQ0gsUUFBUSxDQUFTO0lBQ2pCLE1BQU0sQ0FBUztJQUVmLFlBQVksRUFBVSxFQUFFLFFBQWdCLEVBQUUsTUFBYyxFQUFFLEtBQVk7UUFDcEUsTUFBTSxPQUFPLEdBQUcsMkJBQTJCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzRCxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRiJ9
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export class ClusterWorkerExceptionError extends Error {
|
|
2
|
-
count;
|
|
3
|
-
constructor(agent, worker) {
|
|
4
|
-
const message = `[master] ${agent} agent and ${worker} worker(s) alive, exit to avoid unknown state`;
|
|
5
|
-
super(message);
|
|
6
|
-
this.name = this.constructor.name;
|
|
7
|
-
this.count = {
|
|
8
|
-
agent,
|
|
9
|
-
worker,
|
|
10
|
-
};
|
|
11
|
-
Error.captureStackTrace(this, this.constructor);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlcldvcmtlckV4Y2VwdGlvbkVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9yL0NsdXN0ZXJXb3JrZXJFeGNlcHRpb25FcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsS0FBSztJQUNwRCxLQUFLLENBR0g7SUFFRixZQUFZLEtBQWEsRUFBRSxNQUFjO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLFlBQVksS0FBSyxjQUFjLE1BQU0sK0NBQStDLENBQUM7UUFDckcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsS0FBSztZQUNMLE1BQU07U0FDUCxDQUFDO1FBQ0YsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGIn0=
|
package/dist/esm/error/index.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './ClusterAgentWorkerError.js';
|
|
2
|
-
export * from './ClusterWorkerExceptionError.js';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXJyb3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGtDQUFrQyxDQUFDIn0=
|
package/dist/esm/index.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Master, MasterOptions } from './master.js';
|
|
2
|
-
import { ClusterOptions, ClusterHTTPSSecureOptions, ClusterStartMode } from './utils/options.js';
|
|
3
|
-
/**
|
|
4
|
-
* cluster start flow:
|
|
5
|
-
*
|
|
6
|
-
* [startCluster] -> master -> agent_worker -> new [Agent] -> agentWorkerLoader
|
|
7
|
-
* `-> app_worker -> new [Application] -> appWorkerLoader
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* start egg app
|
|
12
|
-
* @function Egg#startCluster
|
|
13
|
-
* @param {Object} options {@link Master}
|
|
14
|
-
*/
|
|
15
|
-
export declare function startCluster(options: ClusterOptions): Promise<void>;
|
|
16
|
-
export { Master, MasterOptions, ClusterOptions, ClusterHTTPSSecureOptions, ClusterStartMode, };
|
|
17
|
-
export * from './error/index.js';
|
package/dist/esm/index.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Master } from './master.js';
|
|
2
|
-
/**
|
|
3
|
-
* cluster start flow:
|
|
4
|
-
*
|
|
5
|
-
* [startCluster] -> master -> agent_worker -> new [Agent] -> agentWorkerLoader
|
|
6
|
-
* `-> app_worker -> new [Application] -> appWorkerLoader
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* start egg app
|
|
11
|
-
* @function Egg#startCluster
|
|
12
|
-
* @param {Object} options {@link Master}
|
|
13
|
-
*/
|
|
14
|
-
export async function startCluster(options) {
|
|
15
|
-
await new Master(options).ready();
|
|
16
|
-
}
|
|
17
|
-
export { Master, };
|
|
18
|
-
export * from './error/index.js';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFHcEQ7Ozs7OztHQU1HO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLE9BQXVCO0lBQ3hELE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDcEMsQ0FBQztBQUVELE9BQU8sRUFDTCxNQUFNLEdBRVAsQ0FBQztBQUVGLGNBQWMsa0JBQWtCLENBQUMifQ==
|
package/dist/esm/master.d.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { ReadyEventEmitter } from 'get-ready';
|
|
2
|
-
import { EggConsoleLogger as ConsoleLogger } from 'egg-logger';
|
|
3
|
-
import { ClusterOptions, ParsedClusterOptions } from './utils/options.js';
|
|
4
|
-
import { WorkerManager } from './utils/worker_manager.js';
|
|
5
|
-
import { Messenger } from './utils/messenger.js';
|
|
6
|
-
import { AgentProcessUtils as ProcessAgentWorker } from './utils/mode/impl/process/agent.js';
|
|
7
|
-
import { AppProcessUtils as ProcessAppWorker } from './utils/mode/impl/process/app.js';
|
|
8
|
-
import { AgentThreadUtils as WorkerThreadsAgentWorker } from './utils/mode/impl/worker_threads/agent.js';
|
|
9
|
-
import { AppThreadUtils as WorkerThreadsAppWorker } from './utils/mode/impl/worker_threads/app.js';
|
|
10
|
-
export interface MasterOptions extends ParsedClusterOptions {
|
|
11
|
-
clusterPort?: number;
|
|
12
|
-
stickyWorkerPort?: number;
|
|
13
|
-
}
|
|
14
|
-
export declare class Master extends ReadyEventEmitter {
|
|
15
|
-
#private;
|
|
16
|
-
options: MasterOptions;
|
|
17
|
-
isStarted: boolean;
|
|
18
|
-
workerManager: WorkerManager;
|
|
19
|
-
messenger: Messenger;
|
|
20
|
-
isProduction: boolean;
|
|
21
|
-
agentWorkerIndex: number;
|
|
22
|
-
closed: boolean;
|
|
23
|
-
logger: ConsoleLogger;
|
|
24
|
-
agentWorker: ProcessAgentWorker | WorkerThreadsAgentWorker;
|
|
25
|
-
appWorker: ProcessAppWorker | WorkerThreadsAppWorker;
|
|
26
|
-
constructor(options?: ClusterOptions);
|
|
27
|
-
startByProcess(): void;
|
|
28
|
-
startByWorkerThreads(): void;
|
|
29
|
-
detectPorts(): Promise<void>;
|
|
30
|
-
log(msg: string, ...args: any[]): void;
|
|
31
|
-
startMasterSocketServer(cb: (err?: Error) => void): void;
|
|
32
|
-
stickyWorker(ip: string): import("./utils/mode/base/app.js").BaseAppWorker<import("worker_threads").Worker | import("cluster").Worker>;
|
|
33
|
-
forkAgentWorker(): void;
|
|
34
|
-
forkAppWorkers(): void;
|
|
35
|
-
/**
|
|
36
|
-
* close agent worker, App Worker will closed by cluster
|
|
37
|
-
*
|
|
38
|
-
* https://www.exratione.com/2013/05/die-child-process-die/
|
|
39
|
-
* make sure Agent Worker exit before master exit
|
|
40
|
-
*
|
|
41
|
-
* @param {number} timeout - kill agent timeout
|
|
42
|
-
* @return {Promise} -
|
|
43
|
-
*/
|
|
44
|
-
killAgentWorker(timeout: number): Promise<void>;
|
|
45
|
-
killAppWorkers(timeout: number): Promise<void>;
|
|
46
|
-
/**
|
|
47
|
-
* Agent Worker exit handler
|
|
48
|
-
* Will exit during startup, and refork during running.
|
|
49
|
-
*/
|
|
50
|
-
onAgentExit(data: {
|
|
51
|
-
/** exit code */
|
|
52
|
-
code: number;
|
|
53
|
-
/** received signal */
|
|
54
|
-
signal: string;
|
|
55
|
-
}): void;
|
|
56
|
-
onAgentStart(): void;
|
|
57
|
-
/**
|
|
58
|
-
* App Worker exit handler
|
|
59
|
-
*/
|
|
60
|
-
onAppExit(data: {
|
|
61
|
-
workerId: number;
|
|
62
|
-
code: number;
|
|
63
|
-
signal: string;
|
|
64
|
-
}): void;
|
|
65
|
-
/**
|
|
66
|
-
* after app worker
|
|
67
|
-
*/
|
|
68
|
-
onAppStart(data: {
|
|
69
|
-
workerId: number;
|
|
70
|
-
address: ListeningAddress;
|
|
71
|
-
}): void;
|
|
72
|
-
/**
|
|
73
|
-
* master exit handler
|
|
74
|
-
*/
|
|
75
|
-
onExit(code: number): void;
|
|
76
|
-
onSignal(signal: string): void;
|
|
77
|
-
/**
|
|
78
|
-
* reload workers, for develop purpose
|
|
79
|
-
*/
|
|
80
|
-
onReload(): void;
|
|
81
|
-
close(): Promise<void>;
|
|
82
|
-
_doClose(): Promise<void>;
|
|
83
|
-
}
|
|
84
|
-
interface ListeningAddress {
|
|
85
|
-
port: number;
|
|
86
|
-
protocol: string;
|
|
87
|
-
address?: string;
|
|
88
|
-
addressType?: number;
|
|
89
|
-
}
|
|
90
|
-
export {};
|