@eggjs/cluster 3.0.1 → 3.1.0-beta.11

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.
Files changed (127) hide show
  1. package/README.md +17 -21
  2. package/dist/agent_worker.d.ts +1 -0
  3. package/dist/agent_worker.js +55 -0
  4. package/dist/app_worker.d.ts +1 -0
  5. package/dist/app_worker.js +131 -0
  6. package/dist/dirname.js +11 -0
  7. package/dist/error/ClusterAgentWorkerError.d.ts +13 -0
  8. package/dist/error/ClusterAgentWorkerError.js +22 -0
  9. package/dist/error/ClusterWorkerExceptionError.d.ts +10 -0
  10. package/dist/error/ClusterWorkerExceptionError.js +17 -0
  11. package/dist/index.d.ts +22 -0
  12. package/dist/index.js +24 -0
  13. package/dist/master.d.ts +96 -0
  14. package/dist/master.js +426 -0
  15. package/dist/utils/messenger.d.ts +96 -0
  16. package/dist/utils/messenger.js +144 -0
  17. package/dist/utils/mode/base/agent.d.ts +45 -0
  18. package/dist/utils/mode/base/agent.js +63 -0
  19. package/dist/utils/mode/base/app.d.ts +56 -0
  20. package/dist/utils/mode/base/app.js +77 -0
  21. package/dist/utils/mode/impl/process/agent.d.ts +22 -0
  22. package/dist/utils/mode/impl/process/agent.js +93 -0
  23. package/dist/utils/mode/impl/process/app.d.ts +12 -0
  24. package/dist/utils/mode/impl/process/app.js +117 -0
  25. package/dist/utils/mode/impl/worker_threads/agent.d.ts +22 -0
  26. package/dist/utils/mode/impl/worker_threads/agent.js +79 -0
  27. package/dist/utils/mode/impl/worker_threads/app.d.ts +13 -0
  28. package/dist/utils/mode/impl/worker_threads/app.js +128 -0
  29. package/dist/utils/options.d.ts +83 -0
  30. package/dist/utils/options.js +56 -0
  31. package/dist/utils/terminate.js +62 -0
  32. package/dist/utils/worker_manager.d.ts +32 -0
  33. package/dist/utils/worker_manager.js +68 -0
  34. package/package.json +41 -63
  35. package/dist/commonjs/agent_worker.d.ts +0 -1
  36. package/dist/commonjs/agent_worker.js +0 -69
  37. package/dist/commonjs/app_worker.d.ts +0 -1
  38. package/dist/commonjs/app_worker.js +0 -173
  39. package/dist/commonjs/dirname.d.ts +0 -1
  40. package/dist/commonjs/dirname.js +0 -17
  41. package/dist/commonjs/error/ClusterAgentWorkerError.d.ts +0 -10
  42. package/dist/commonjs/error/ClusterAgentWorkerError.js +0 -23
  43. package/dist/commonjs/error/ClusterWorkerExceptionError.d.ts +0 -7
  44. package/dist/commonjs/error/ClusterWorkerExceptionError.js +0 -18
  45. package/dist/commonjs/error/index.d.ts +0 -2
  46. package/dist/commonjs/error/index.js +0 -19
  47. package/dist/commonjs/index.d.ts +0 -17
  48. package/dist/commonjs/index.js +0 -37
  49. package/dist/commonjs/master.d.ts +0 -90
  50. package/dist/commonjs/master.js +0 -560
  51. package/dist/commonjs/package.json +0 -3
  52. package/dist/commonjs/utils/messenger.d.ts +0 -92
  53. package/dist/commonjs/utils/messenger.js +0 -186
  54. package/dist/commonjs/utils/mode/base/agent.d.ts +0 -38
  55. package/dist/commonjs/utils/mode/base/agent.js +0 -68
  56. package/dist/commonjs/utils/mode/base/app.d.ts +0 -48
  57. package/dist/commonjs/utils/mode/base/app.js +0 -83
  58. package/dist/commonjs/utils/mode/impl/process/agent.d.ts +0 -18
  59. package/dist/commonjs/utils/mode/impl/process/agent.js +0 -108
  60. package/dist/commonjs/utils/mode/impl/process/app.d.ts +0 -21
  61. package/dist/commonjs/utils/mode/impl/process/app.js +0 -127
  62. package/dist/commonjs/utils/mode/impl/worker_threads/agent.d.ts +0 -18
  63. package/dist/commonjs/utils/mode/impl/worker_threads/agent.js +0 -91
  64. package/dist/commonjs/utils/mode/impl/worker_threads/app.d.ts +0 -26
  65. package/dist/commonjs/utils/mode/impl/worker_threads/app.js +0 -142
  66. package/dist/commonjs/utils/options.d.ts +0 -80
  67. package/dist/commonjs/utils/options.js +0 -83
  68. package/dist/commonjs/utils/terminate.d.ts +0 -6
  69. package/dist/commonjs/utils/terminate.js +0 -89
  70. package/dist/commonjs/utils/worker_manager.d.ts +0 -25
  71. package/dist/commonjs/utils/worker_manager.js +0 -76
  72. package/dist/esm/agent_worker.d.ts +0 -1
  73. package/dist/esm/agent_worker.js +0 -67
  74. package/dist/esm/app_worker.d.ts +0 -1
  75. package/dist/esm/app_worker.js +0 -168
  76. package/dist/esm/dirname.d.ts +0 -1
  77. package/dist/esm/dirname.js +0 -11
  78. package/dist/esm/error/ClusterAgentWorkerError.d.ts +0 -10
  79. package/dist/esm/error/ClusterAgentWorkerError.js +0 -19
  80. package/dist/esm/error/ClusterWorkerExceptionError.d.ts +0 -7
  81. package/dist/esm/error/ClusterWorkerExceptionError.js +0 -14
  82. package/dist/esm/error/index.d.ts +0 -2
  83. package/dist/esm/error/index.js +0 -3
  84. package/dist/esm/index.d.ts +0 -17
  85. package/dist/esm/index.js +0 -19
  86. package/dist/esm/master.d.ts +0 -90
  87. package/dist/esm/master.js +0 -553
  88. package/dist/esm/package.json +0 -3
  89. package/dist/esm/utils/messenger.d.ts +0 -92
  90. package/dist/esm/utils/messenger.js +0 -179
  91. package/dist/esm/utils/mode/base/agent.d.ts +0 -38
  92. package/dist/esm/utils/mode/base/agent.js +0 -60
  93. package/dist/esm/utils/mode/base/app.d.ts +0 -48
  94. package/dist/esm/utils/mode/base/app.js +0 -75
  95. package/dist/esm/utils/mode/impl/process/agent.d.ts +0 -18
  96. package/dist/esm/utils/mode/impl/process/agent.js +0 -103
  97. package/dist/esm/utils/mode/impl/process/app.d.ts +0 -21
  98. package/dist/esm/utils/mode/impl/process/app.js +0 -119
  99. package/dist/esm/utils/mode/impl/worker_threads/agent.d.ts +0 -18
  100. package/dist/esm/utils/mode/impl/worker_threads/agent.js +0 -83
  101. package/dist/esm/utils/mode/impl/worker_threads/app.d.ts +0 -26
  102. package/dist/esm/utils/mode/impl/worker_threads/app.js +0 -137
  103. package/dist/esm/utils/options.d.ts +0 -80
  104. package/dist/esm/utils/options.js +0 -77
  105. package/dist/esm/utils/terminate.d.ts +0 -6
  106. package/dist/esm/utils/terminate.js +0 -86
  107. package/dist/esm/utils/worker_manager.d.ts +0 -25
  108. package/dist/esm/utils/worker_manager.js +0 -72
  109. package/dist/package.json +0 -4
  110. package/src/agent_worker.ts +0 -80
  111. package/src/app_worker.ts +0 -196
  112. package/src/dirname.ts +0 -11
  113. package/src/error/ClusterAgentWorkerError.ts +0 -19
  114. package/src/error/ClusterWorkerExceptionError.ts +0 -17
  115. package/src/error/index.ts +0 -2
  116. package/src/index.ts +0 -26
  117. package/src/master.ts +0 -658
  118. package/src/utils/messenger.ts +0 -207
  119. package/src/utils/mode/base/agent.ts +0 -90
  120. package/src/utils/mode/base/app.ts +0 -119
  121. package/src/utils/mode/impl/process/agent.ts +0 -119
  122. package/src/utils/mode/impl/process/app.ts +0 -140
  123. package/src/utils/mode/impl/worker_threads/agent.ts +0 -99
  124. package/src/utils/mode/impl/worker_threads/app.ts +0 -164
  125. package/src/utils/options.ts +0 -171
  126. package/src/utils/terminate.ts +0 -97
  127. package/src/utils/worker_manager.ts +0 -87
@@ -1,92 +0,0 @@
1
- import type { Master } from '../master.js';
2
- import type { WorkerManager } from './worker_manager.js';
3
- export type MessageCharacter = 'agent' | 'app' | 'master' | 'parent';
4
- export interface MessageBody {
5
- action: string;
6
- data?: unknown;
7
- to?: MessageCharacter;
8
- from?: MessageCharacter;
9
- /**
10
- * @deprecated Keep compatible, please use receiverWorkerId instead
11
- */
12
- receiverPid?: string;
13
- receiverWorkerId?: string;
14
- senderWorkerId?: string;
15
- }
16
- /**
17
- * master messenger, provide communication between parent, master, agent and app.
18
- *
19
- * ┌────────┐
20
- * │ parent │
21
- * /└────────┘\
22
- * / | \
23
- * / ┌────────┐ \
24
- * / │ master │ \
25
- * / └────────┘ \
26
- * / / \ \
27
- * ┌───────┐ ┌───────┐
28
- * │ agent │ ------- │ app │
29
- * └───────┘ └───────┘
30
- *
31
- *
32
- * in app worker
33
- *
34
- * ```js
35
- * process.send({
36
- * action: 'xxx',
37
- * data: '',
38
- * to: 'agent/master/parent', // default to agent
39
- * });
40
- * ```
41
- *
42
- * in agent worker
43
- *
44
- * ```js
45
- * process.send({
46
- * action: 'xxx',
47
- * data: '',
48
- * to: 'app/master/parent', // default to app
49
- * });
50
- * ```
51
- *
52
- * in parent
53
- *
54
- * ```js
55
- * process.send({
56
- * action: 'xxx',
57
- * data: '',
58
- * to: 'app/agent/master', // default to master
59
- * });
60
- * ```
61
- */
62
- export declare class Messenger {
63
- #private;
64
- constructor(master: Master, workerManager: WorkerManager);
65
- /**
66
- * send message
67
- * @param {Object} data message body
68
- * - {String} from from who
69
- * - {String} to to who
70
- */
71
- send(data: MessageBody): void;
72
- /**
73
- * send message to master self
74
- * @param {Object} data message body
75
- */
76
- sendToMaster(data: MessageBody): void;
77
- /**
78
- * send message to parent process
79
- * @param {Object} data message body
80
- */
81
- sendToParent(data: MessageBody): void;
82
- /**
83
- * send message to app worker
84
- * @param {Object} data message body
85
- */
86
- sendToAppWorker(data: MessageBody): void;
87
- /**
88
- * send message to agent worker
89
- * @param {Object} data message body
90
- */
91
- sendToAgentWorker(data: MessageBody): void;
92
- }
@@ -1,186 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Messenger = void 0;
7
- const node_util_1 = require("node:util");
8
- const node_worker_threads_1 = __importDefault(require("node:worker_threads"));
9
- const debug = (0, node_util_1.debuglog)('@eggjs/cluster/messenger');
10
- /**
11
- * master messenger, provide communication between parent, master, agent and app.
12
- *
13
- * ┌────────┐
14
- * │ parent │
15
- * /└────────┘\
16
- * / | \
17
- * / ┌────────┐ \
18
- * / │ master │ \
19
- * / └────────┘ \
20
- * / / \ \
21
- * ┌───────┐ ┌───────┐
22
- * │ agent │ ------- │ app │
23
- * └───────┘ └───────┘
24
- *
25
- *
26
- * in app worker
27
- *
28
- * ```js
29
- * process.send({
30
- * action: 'xxx',
31
- * data: '',
32
- * to: 'agent/master/parent', // default to agent
33
- * });
34
- * ```
35
- *
36
- * in agent worker
37
- *
38
- * ```js
39
- * process.send({
40
- * action: 'xxx',
41
- * data: '',
42
- * to: 'app/master/parent', // default to app
43
- * });
44
- * ```
45
- *
46
- * in parent
47
- *
48
- * ```js
49
- * process.send({
50
- * action: 'xxx',
51
- * data: '',
52
- * to: 'app/agent/master', // default to master
53
- * });
54
- * ```
55
- */
56
- class Messenger {
57
- #master;
58
- #workerManager;
59
- #hasParent;
60
- constructor(master, workerManager) {
61
- this.#master = master;
62
- this.#workerManager = workerManager;
63
- this.#hasParent = !!node_worker_threads_1.default.parentPort || !!process.send;
64
- process.on('message', (msg) => {
65
- msg.from = 'parent';
66
- this.send(msg);
67
- });
68
- process.once('disconnect', () => {
69
- this.#hasParent = false;
70
- });
71
- }
72
- /**
73
- * send message
74
- * @param {Object} data message body
75
- * - {String} from from who
76
- * - {String} to to who
77
- */
78
- send(data) {
79
- if (!data.from) {
80
- data.from = 'master';
81
- }
82
- // https://github.com/eggjs/egg/blob/b6861f1c7548f05a281386050dfeaeb30f236558/lib/core/messenger/ipc.js#L56
83
- // recognize receiverWorkerId is to who
84
- const receiverWorkerId = data.receiverWorkerId ?? data.receiverPid;
85
- if (receiverWorkerId) {
86
- if (receiverWorkerId === String(process.pid)) {
87
- data.to = 'master';
88
- }
89
- else if (receiverWorkerId === String(this.#workerManager.getAgent().workerId)) {
90
- data.to = 'agent';
91
- }
92
- else {
93
- data.to = 'app';
94
- }
95
- }
96
- // default from -> to rules
97
- if (!data.to) {
98
- if (data.from === 'agent') {
99
- data.to = 'app';
100
- }
101
- if (data.from === 'app') {
102
- data.to = 'agent';
103
- }
104
- if (data.from === 'parent') {
105
- data.to = 'master';
106
- }
107
- }
108
- // app -> master
109
- // agent -> master
110
- if (data.to === 'master') {
111
- debug('%s -> master, data: %j', data.from, data);
112
- // app/agent to master
113
- this.sendToMaster(data);
114
- return;
115
- }
116
- // master -> parent
117
- // app -> parent
118
- // agent -> parent
119
- if (data.to === 'parent') {
120
- debug('%s -> parent, data: %j', data.from, data);
121
- this.sendToParent(data);
122
- return;
123
- }
124
- // parent -> master -> app
125
- // agent -> master -> app
126
- if (data.to === 'app') {
127
- debug('%s -> %s, data: %j', data.from, data.to, data);
128
- this.sendToAppWorker(data);
129
- return;
130
- }
131
- // parent -> master -> agent
132
- // app -> master -> agent,可能不指定 to
133
- if (data.to === 'agent') {
134
- debug('%s -> %s, data: %j', data.from, data.to, data);
135
- this.sendToAgentWorker(data);
136
- return;
137
- }
138
- }
139
- /**
140
- * send message to master self
141
- * @param {Object} data message body
142
- */
143
- sendToMaster(data) {
144
- // e.g: master.on('app-start', data => {})
145
- this.#master.emit(data.action, data.data);
146
- }
147
- /**
148
- * send message to parent process
149
- * @param {Object} data message body
150
- */
151
- sendToParent(data) {
152
- if (!this.#hasParent) {
153
- return;
154
- }
155
- process.send(data);
156
- }
157
- /**
158
- * send message to app worker
159
- * @param {Object} data message body
160
- */
161
- sendToAppWorker(data) {
162
- for (const worker of this.#workerManager.listWorkers()) {
163
- if (worker.state === 'disconnected') {
164
- continue;
165
- }
166
- // check receiverWorkerId
167
- const receiverWorkerId = data.receiverWorkerId ?? data.receiverPid;
168
- if (receiverWorkerId && receiverWorkerId !== String(worker.workerId)) {
169
- continue;
170
- }
171
- worker.send(data);
172
- }
173
- }
174
- /**
175
- * send message to agent worker
176
- * @param {Object} data message body
177
- */
178
- sendToAgentWorker(data) {
179
- const agent = this.#workerManager.getAgent();
180
- if (agent) {
181
- agent.send(data);
182
- }
183
- }
184
- }
185
- exports.Messenger = Messenger;
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2VuZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL21lc3Nlbmdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5Q0FBcUM7QUFDckMsOEVBQWdEO0FBSWhELE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQywwQkFBMEIsQ0FBQyxDQUFDO0FBaUJuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0gsTUFBYSxTQUFTO0lBQ3BCLE9BQU8sQ0FBUztJQUNoQixjQUFjLENBQWdCO0lBQzlCLFVBQVUsQ0FBVTtJQUVwQixZQUFZLE1BQWMsRUFBRSxhQUE0QjtRQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyw2QkFBYSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMvRCxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQWdCLEVBQUUsRUFBRTtZQUN6QyxHQUFHLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxDQUFDLElBQWlCO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN2QixDQUFD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
@@ -1,38 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- import type { ChildProcess } from 'node:child_process';
3
- import type { Worker } from 'node:worker_threads';
4
- import type { Logger } from 'egg-logger';
5
- import type { MasterOptions } from '../../../master.js';
6
- import type { MessageBody, Messenger } from '../../messenger.js';
7
- export declare abstract class BaseAgentWorker<T = ChildProcess | Worker> {
8
- #private;
9
- instance: T;
10
- constructor(instance: T);
11
- abstract get workerId(): number;
12
- get id(): number;
13
- set id(id: number);
14
- get status(): string;
15
- set status(status: string);
16
- abstract send(message: MessageBody): void;
17
- static send(_message: MessageBody): void;
18
- static kill(): void;
19
- static gracefulExit(_options: any): void;
20
- }
21
- type LogFun = (msg: any, ...args: any[]) => void;
22
- export declare abstract class BaseAgentUtils extends EventEmitter {
23
- protected options: MasterOptions;
24
- protected messenger: Messenger;
25
- protected log: LogFun;
26
- protected logger: Logger;
27
- startTime: number;
28
- constructor(options: MasterOptions, { log, logger, messenger }: {
29
- log: LogFun;
30
- logger: Logger;
31
- messenger: Messenger;
32
- });
33
- getAgentWorkerFile(): string;
34
- fork(): void;
35
- clean(): void;
36
- abstract kill(timeout: number): Promise<void>;
37
- }
38
- export {};
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BaseAgentUtils = exports.BaseAgentWorker = void 0;
7
- const node_path_1 = __importDefault(require("node:path"));
8
- const node_events_1 = require("node:events");
9
- const dirname_js_1 = require("../../../dirname.js");
10
- class BaseAgentWorker {
11
- instance;
12
- #instanceId;
13
- #instanceStatus;
14
- constructor(instance) {
15
- this.instance = instance;
16
- }
17
- get id() {
18
- return this.#instanceId;
19
- }
20
- set id(id) {
21
- this.#instanceId = id;
22
- }
23
- get status() {
24
- return this.#instanceStatus;
25
- }
26
- set status(status) {
27
- this.#instanceStatus = status;
28
- }
29
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
- static send(_message) {
31
- throw new Error('BaseAgentWorker should implement send.');
32
- }
33
- static kill() {
34
- throw new Error('BaseAgentWorker should implement kill.');
35
- }
36
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
- static gracefulExit(_options) {
38
- throw new Error('BaseAgentWorker should implement gracefulExit.');
39
- }
40
- }
41
- exports.BaseAgentWorker = BaseAgentWorker;
42
- class BaseAgentUtils extends node_events_1.EventEmitter {
43
- options;
44
- messenger;
45
- log;
46
- logger;
47
- // public attrs
48
- startTime = 0;
49
- constructor(options, { log, logger, messenger }) {
50
- super();
51
- this.options = options;
52
- this.log = log;
53
- this.logger = logger;
54
- this.messenger = messenger;
55
- // this.instance = null;
56
- }
57
- getAgentWorkerFile() {
58
- return node_path_1.default.join((0, dirname_js_1.getSrcDirname)(), 'agent_worker.js');
59
- }
60
- fork() {
61
- throw new Error('BaseAgent should implement fork.');
62
- }
63
- clean() {
64
- throw new Error('BaseAgent should implement clean.');
65
- }
66
- }
67
- exports.BaseAgentUtils = BaseAgentUtils;
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdXRpbHMvbW9kZS9iYXNlL2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUE2QjtBQUM3Qiw2Q0FBMkM7QUFNM0Msb0RBQW9EO0FBRXBELE1BQXNCLGVBQWU7SUFDbkMsUUFBUSxDQUFJO0lBQ1osV0FBVyxDQUFTO0lBQ3BCLGVBQWUsQ0FBUztJQUV4QixZQUFZLFFBQVc7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUlELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLE1BQU07UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBSUQsNkRBQTZEO0lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBcUI7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSTtRQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBYTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNGO0FBMUNELDBDQTBDQztBQUlELE1BQXNCLGNBQWUsU0FBUSwwQkFBWTtJQUM3QyxPQUFPLENBQWdCO0lBQ3ZCLFNBQVMsQ0FBWTtJQUNyQixHQUFHLENBQVM7SUFDWixNQUFNLENBQVM7SUFDekIsZUFBZTtJQUNmLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFZCxZQUFZLE9BQXNCLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFJM0Q7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0Isd0JBQXdCO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxtQkFBSSxDQUFDLElBQUksQ0FBQyxJQUFBLDBCQUFhLEdBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FHRjtBQWxDRCx3Q0FrQ0MifQ==
@@ -1,48 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- import type { Worker as ClusterProcessWorker } from 'node:cluster';
3
- import type { Worker as ThreadWorker } from 'node:worker_threads';
4
- import type { Logger } from 'egg-logger';
5
- import type { MessageBody, Messenger } from '../../messenger.js';
6
- import type { MasterOptions } from '../../../master.js';
7
- export declare abstract class BaseAppWorker<T = ThreadWorker | ClusterProcessWorker> {
8
- instance: T;
9
- constructor(instance: T);
10
- abstract get workerId(): number;
11
- abstract get id(): number;
12
- get state(): string;
13
- set state(state: string);
14
- abstract get exitedAfterDisconnect(): boolean;
15
- abstract get exitCode(): number;
16
- get disableRefork(): boolean;
17
- set disableRefork(disableRefork: boolean);
18
- get isDevReload(): boolean;
19
- set isDevReload(isDevReload: boolean);
20
- abstract send(data: MessageBody): void;
21
- clean(): void;
22
- static get workerId(): number;
23
- static on(..._args: any[]): void;
24
- static send(_message: MessageBody): void;
25
- static kill(): void;
26
- static gracefulExit(_options: any): void;
27
- }
28
- type LogFun = (msg: any, ...args: any[]) => void;
29
- export declare abstract class BaseAppUtils extends EventEmitter {
30
- options: MasterOptions;
31
- protected messenger: Messenger;
32
- protected log: LogFun;
33
- protected logger: Logger;
34
- protected isProduction: boolean;
35
- startTime: number;
36
- startSuccessCount: number;
37
- isAllWorkerStarted: boolean;
38
- constructor(options: MasterOptions, { log, logger, messenger, isProduction, }: {
39
- log: LogFun;
40
- logger: Logger;
41
- messenger: Messenger;
42
- isProduction: boolean;
43
- });
44
- getAppWorkerFile(): string;
45
- fork(): void;
46
- abstract kill(timeout: number): Promise<void>;
47
- }
48
- export {};
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BaseAppUtils = exports.BaseAppWorker = void 0;
7
- const node_path_1 = __importDefault(require("node:path"));
8
- const node_events_1 = require("node:events");
9
- const dirname_js_1 = require("../../../dirname.js");
10
- class BaseAppWorker {
11
- instance;
12
- constructor(instance) {
13
- this.instance = instance;
14
- }
15
- get state() {
16
- return Reflect.get(this.instance, 'state');
17
- }
18
- set state(state) {
19
- Reflect.set(this.instance, 'state', state);
20
- }
21
- get disableRefork() {
22
- return Reflect.get(this.instance, 'disableRefork');
23
- }
24
- set disableRefork(disableRefork) {
25
- Reflect.set(this.instance, 'disableRefork', disableRefork);
26
- }
27
- get isDevReload() {
28
- return Reflect.get(this.instance, 'isDevReload');
29
- }
30
- set isDevReload(isDevReload) {
31
- Reflect.set(this.instance, 'isDevReload', isDevReload);
32
- }
33
- clean() {
34
- throw new Error('BaseAppWorker should implement clean.');
35
- }
36
- // static methods use on src/app_worker.ts
37
- static get workerId() {
38
- throw new Error('BaseAppWorker should implement workerId.');
39
- }
40
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
41
- static on(..._args) {
42
- throw new Error('BaseAppWorker should implement on.');
43
- }
44
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
45
- static send(_message) {
46
- throw new Error('BaseAgentWorker should implement send.');
47
- }
48
- static kill() {
49
- throw new Error('BaseAppWorker should implement kill.');
50
- }
51
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
52
- static gracefulExit(_options) {
53
- throw new Error('BaseAgentWorker should implement gracefulExit.');
54
- }
55
- }
56
- exports.BaseAppWorker = BaseAppWorker;
57
- class BaseAppUtils extends node_events_1.EventEmitter {
58
- options;
59
- messenger;
60
- log;
61
- logger;
62
- isProduction;
63
- // public attrs
64
- startTime = 0;
65
- startSuccessCount = 0;
66
- isAllWorkerStarted = false;
67
- constructor(options, { log, logger, messenger, isProduction, }) {
68
- super();
69
- this.options = options;
70
- this.log = log;
71
- this.logger = logger;
72
- this.messenger = messenger;
73
- this.isProduction = isProduction;
74
- }
75
- getAppWorkerFile() {
76
- return node_path_1.default.join((0, dirname_js_1.getSrcDirname)(), 'app_worker.js');
77
- }
78
- fork() {
79
- throw new Error('BaseApp should implement fork.');
80
- }
81
- }
82
- exports.BaseAppUtils = BaseAppUtils;
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3V0aWxzL21vZGUvYmFzZS9hcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMERBQTZCO0FBQzdCLDZDQUEyQztBQU0zQyxvREFBb0Q7QUFFcEQsTUFBc0IsYUFBYTtJQUNqQyxRQUFRLENBQUk7SUFFWixZQUFZLFFBQVc7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQU1ELElBQUksS0FBSztRQUNQLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUyxFQUFFLE9BQU8sQ0FBVyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQU1ELElBQUksYUFBYTtRQUNmLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUyxFQUFFLGVBQWUsQ0FBWSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxhQUFzQjtRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFTLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVMsRUFBRSxhQUFhLENBQVksQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsV0FBb0I7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUyxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBSUQsS0FBSztRQUNILE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsMENBQTBDO0lBRTFDLE1BQU0sS0FBSyxRQUFRO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFZO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBcUI7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSTtRQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBYTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNGO0FBckVELHNDQXFFQztBQUlELE1BQXNCLFlBQWEsU0FBUSwwQkFBWTtJQUNyRCxPQUFPLENBQWdCO0lBQ2IsU0FBUyxDQUFZO0lBQ3JCLEdBQUcsQ0FBUztJQUNaLE1BQU0sQ0FBUztJQUNmLFlBQVksQ0FBVTtJQUNoQyxlQUFlO0lBQ2YsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUN0QixrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFFM0IsWUFBWSxPQUFzQixFQUFFLEVBQ2xDLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksR0FNckM7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sbUJBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSwwQkFBYSxHQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUk7UUFDRixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUdGO0FBcENELG9DQW9DQyJ9
@@ -1,18 +0,0 @@
1
- import { type ChildProcess } from 'node:child_process';
2
- import { type Options as gracefulExitOptions } from 'graceful-process';
3
- import { BaseAgentWorker, BaseAgentUtils } from '../../base/agent.js';
4
- import type { MessageBody } from '../../../messenger.js';
5
- export declare class AgentProcessWorker extends BaseAgentWorker<ChildProcess> {
6
- get workerId(): number;
7
- send(message: MessageBody): void;
8
- static send(message: MessageBody): void;
9
- static kill(): void;
10
- static gracefulExit(options: gracefulExitOptions): void;
11
- }
12
- export declare class AgentProcessUtils extends BaseAgentUtils {
13
- #private;
14
- instance: AgentProcessWorker;
15
- fork(): this;
16
- clean(): void;
17
- kill(timeout: number): Promise<void>;
18
- }
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AgentProcessUtils = exports.AgentProcessWorker = void 0;
4
- const node_child_process_1 = require("node:child_process");
5
- const sendmessage_1 = require("sendmessage");
6
- const graceful_process_1 = require("graceful-process");
7
- const agent_js_1 = require("../../base/agent.js");
8
- const terminate_js_1 = require("../../../terminate.js");
9
- const ClusterAgentWorkerError_js_1 = require("../../../../error/ClusterAgentWorkerError.js");
10
- class AgentProcessWorker extends agent_js_1.BaseAgentWorker {
11
- get workerId() {
12
- return this.instance.pid;
13
- }
14
- send(message) {
15
- (0, sendmessage_1.sendmessage)(this.instance, message);
16
- }
17
- static send(message) {
18
- message.senderWorkerId = String(process.pid);
19
- process.send(message);
20
- }
21
- static kill() {
22
- process.exitCode = 1;
23
- process.kill(process.pid);
24
- }
25
- static gracefulExit(options) {
26
- (0, graceful_process_1.graceful)(options);
27
- }
28
- }
29
- exports.AgentProcessWorker = AgentProcessWorker;
30
- class AgentProcessUtils extends agent_js_1.BaseAgentUtils {
31
- #agentProcess;
32
- #id = 0;
33
- instance;
34
- fork() {
35
- this.startTime = Date.now();
36
- const args = [JSON.stringify(this.options)];
37
- const forkOptions = {};
38
- if (process.platform === 'win32') {
39
- forkOptions.windowsHide = true;
40
- }
41
- // add debug execArgv
42
- const debugPort = process.env.EGG_AGENT_DEBUG_PORT ?? 5800;
43
- if (this.options.isDebug) {
44
- forkOptions.execArgv = process.execArgv.concat([`--inspect-port=${debugPort}`]);
45
- }
46
- const agentProcess = this.#agentProcess = (0, node_child_process_1.fork)(this.getAgentWorkerFile(), args, forkOptions);
47
- const agentWorker = this.instance = new AgentProcessWorker(agentProcess);
48
- agentWorker.status = 'starting';
49
- agentWorker.id = ++this.#id;
50
- this.emit('agent_forked', agentWorker);
51
- this.log('[master] agent_worker#%s:%s start with clusterPort:%s', agentWorker.id, agentWorker.workerId, this.options.clusterPort);
52
- // send debug message
53
- if (this.options.isDebug) {
54
- this.messenger.send({
55
- to: 'parent',
56
- from: 'agent',
57
- action: 'debug',
58
- data: {
59
- debugPort,
60
- // keep compatibility, should use workerId instead
61
- pid: agentWorker.workerId,
62
- workerId: agentWorker.workerId,
63
- },
64
- });
65
- }
66
- // forwarding agent' message to messenger
67
- agentProcess.on('message', (msg) => {
68
- if (typeof msg === 'string') {
69
- msg = {
70
- action: msg,
71
- data: msg,
72
- };
73
- }
74
- msg.from = 'agent';
75
- this.messenger.send(msg);
76
- });
77
- // logger error event
78
- agentProcess.on('error', err => {
79
- err.name = 'AgentWorkerError';
80
- this.logger.error(new ClusterAgentWorkerError_js_1.ClusterAgentWorkerError(agentWorker.id, agentWorker.workerId, agentWorker.status, err));
81
- });
82
- // agent exit message
83
- agentProcess.once('exit', (code, signal) => {
84
- this.messenger.send({
85
- action: 'agent-exit',
86
- data: {
87
- code,
88
- signal,
89
- },
90
- to: 'master',
91
- from: 'agent',
92
- });
93
- });
94
- return this;
95
- }
96
- clean() {
97
- this.#agentProcess.removeAllListeners();
98
- }
99
- async kill(timeout) {
100
- if (this.#agentProcess) {
101
- this.log('[master] kill agent worker with signal SIGTERM');
102
- this.clean();
103
- await (0, terminate_js_1.terminate)(this.#agentProcess, timeout);
104
- }
105
- }
106
- }
107
- exports.AgentProcessUtils = AgentProcessUtils;
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdXRpbHMvbW9kZS9pbXBsL3Byb2Nlc3MvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQStFO0FBQy9FLDZDQUEwQztBQUMxQyx1REFBaUc7QUFDakcsa0RBQXNFO0FBQ3RFLHdEQUFrRDtBQUVsRCw2RkFBdUY7QUFFdkYsTUFBYSxrQkFBbUIsU0FBUSwwQkFBNkI7SUFDbkUsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQW9CO1FBQ3ZCLElBQUEseUJBQVcsRUFBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQW9CO1FBQzlCLE9BQU8sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxPQUFPLENBQUMsSUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSTtRQUNULE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQTRCO1FBQzlDLElBQUEsMkJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0Y7QUF0QkQsZ0RBc0JDO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSx5QkFBYztJQUNuRCxhQUFhLENBQWU7SUFDNUIsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNSLFFBQVEsQ0FBcUI7SUFFN0IsSUFBSTtRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcs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