@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.
Files changed (123) hide show
  1. package/README.md +17 -21
  2. package/dist/dirname.js +11 -0
  3. package/dist/error/ClusterAgentWorkerError.d.ts +13 -0
  4. package/dist/error/ClusterAgentWorkerError.js +22 -0
  5. package/dist/error/ClusterWorkerExceptionError.d.ts +10 -0
  6. package/dist/error/ClusterWorkerExceptionError.js +17 -0
  7. package/dist/index.d.ts +22 -0
  8. package/dist/index.js +24 -0
  9. package/dist/master.d.ts +96 -0
  10. package/dist/master.js +426 -0
  11. package/dist/utils/messenger.d.ts +96 -0
  12. package/dist/utils/messenger.js +144 -0
  13. package/dist/utils/mode/base/agent.d.ts +45 -0
  14. package/dist/utils/mode/base/agent.js +63 -0
  15. package/dist/utils/mode/base/app.d.ts +56 -0
  16. package/dist/utils/mode/base/app.js +77 -0
  17. package/dist/utils/mode/impl/process/agent.d.ts +22 -0
  18. package/dist/utils/mode/impl/process/agent.js +93 -0
  19. package/dist/utils/mode/impl/process/app.d.ts +12 -0
  20. package/dist/utils/mode/impl/process/app.js +117 -0
  21. package/dist/utils/mode/impl/worker_threads/agent.d.ts +22 -0
  22. package/dist/utils/mode/impl/worker_threads/agent.js +79 -0
  23. package/dist/utils/mode/impl/worker_threads/app.d.ts +13 -0
  24. package/dist/utils/mode/impl/worker_threads/app.js +128 -0
  25. package/dist/utils/options.d.ts +83 -0
  26. package/dist/utils/options.js +56 -0
  27. package/dist/utils/terminate.js +62 -0
  28. package/dist/utils/worker_manager.d.ts +32 -0
  29. package/dist/utils/worker_manager.js +68 -0
  30. package/package.json +39 -63
  31. package/dist/commonjs/agent_worker.d.ts +0 -1
  32. package/dist/commonjs/agent_worker.js +0 -65
  33. package/dist/commonjs/app_worker.d.ts +0 -1
  34. package/dist/commonjs/app_worker.js +0 -169
  35. package/dist/commonjs/dirname.d.ts +0 -1
  36. package/dist/commonjs/dirname.js +0 -17
  37. package/dist/commonjs/error/ClusterAgentWorkerError.d.ts +0 -10
  38. package/dist/commonjs/error/ClusterAgentWorkerError.js +0 -23
  39. package/dist/commonjs/error/ClusterWorkerExceptionError.d.ts +0 -7
  40. package/dist/commonjs/error/ClusterWorkerExceptionError.js +0 -18
  41. package/dist/commonjs/error/index.d.ts +0 -2
  42. package/dist/commonjs/error/index.js +0 -19
  43. package/dist/commonjs/index.d.ts +0 -17
  44. package/dist/commonjs/index.js +0 -37
  45. package/dist/commonjs/master.d.ts +0 -90
  46. package/dist/commonjs/master.js +0 -560
  47. package/dist/commonjs/package.json +0 -3
  48. package/dist/commonjs/utils/messenger.d.ts +0 -92
  49. package/dist/commonjs/utils/messenger.js +0 -186
  50. package/dist/commonjs/utils/mode/base/agent.d.ts +0 -38
  51. package/dist/commonjs/utils/mode/base/agent.js +0 -68
  52. package/dist/commonjs/utils/mode/base/app.d.ts +0 -48
  53. package/dist/commonjs/utils/mode/base/app.js +0 -83
  54. package/dist/commonjs/utils/mode/impl/process/agent.d.ts +0 -18
  55. package/dist/commonjs/utils/mode/impl/process/agent.js +0 -108
  56. package/dist/commonjs/utils/mode/impl/process/app.d.ts +0 -21
  57. package/dist/commonjs/utils/mode/impl/process/app.js +0 -127
  58. package/dist/commonjs/utils/mode/impl/worker_threads/agent.d.ts +0 -18
  59. package/dist/commonjs/utils/mode/impl/worker_threads/agent.js +0 -91
  60. package/dist/commonjs/utils/mode/impl/worker_threads/app.d.ts +0 -26
  61. package/dist/commonjs/utils/mode/impl/worker_threads/app.js +0 -142
  62. package/dist/commonjs/utils/options.d.ts +0 -80
  63. package/dist/commonjs/utils/options.js +0 -81
  64. package/dist/commonjs/utils/terminate.d.ts +0 -6
  65. package/dist/commonjs/utils/terminate.js +0 -89
  66. package/dist/commonjs/utils/worker_manager.d.ts +0 -25
  67. package/dist/commonjs/utils/worker_manager.js +0 -76
  68. package/dist/esm/agent_worker.d.ts +0 -1
  69. package/dist/esm/agent_worker.js +0 -63
  70. package/dist/esm/app_worker.d.ts +0 -1
  71. package/dist/esm/app_worker.js +0 -164
  72. package/dist/esm/dirname.d.ts +0 -1
  73. package/dist/esm/dirname.js +0 -11
  74. package/dist/esm/error/ClusterAgentWorkerError.d.ts +0 -10
  75. package/dist/esm/error/ClusterAgentWorkerError.js +0 -19
  76. package/dist/esm/error/ClusterWorkerExceptionError.d.ts +0 -7
  77. package/dist/esm/error/ClusterWorkerExceptionError.js +0 -14
  78. package/dist/esm/error/index.d.ts +0 -2
  79. package/dist/esm/error/index.js +0 -3
  80. package/dist/esm/index.d.ts +0 -17
  81. package/dist/esm/index.js +0 -19
  82. package/dist/esm/master.d.ts +0 -90
  83. package/dist/esm/master.js +0 -553
  84. package/dist/esm/package.json +0 -3
  85. package/dist/esm/utils/messenger.d.ts +0 -92
  86. package/dist/esm/utils/messenger.js +0 -179
  87. package/dist/esm/utils/mode/base/agent.d.ts +0 -38
  88. package/dist/esm/utils/mode/base/agent.js +0 -60
  89. package/dist/esm/utils/mode/base/app.d.ts +0 -48
  90. package/dist/esm/utils/mode/base/app.js +0 -75
  91. package/dist/esm/utils/mode/impl/process/agent.d.ts +0 -18
  92. package/dist/esm/utils/mode/impl/process/agent.js +0 -103
  93. package/dist/esm/utils/mode/impl/process/app.d.ts +0 -21
  94. package/dist/esm/utils/mode/impl/process/app.js +0 -119
  95. package/dist/esm/utils/mode/impl/worker_threads/agent.d.ts +0 -18
  96. package/dist/esm/utils/mode/impl/worker_threads/agent.js +0 -83
  97. package/dist/esm/utils/mode/impl/worker_threads/app.d.ts +0 -26
  98. package/dist/esm/utils/mode/impl/worker_threads/app.js +0 -137
  99. package/dist/esm/utils/options.d.ts +0 -80
  100. package/dist/esm/utils/options.js +0 -75
  101. package/dist/esm/utils/terminate.d.ts +0 -6
  102. package/dist/esm/utils/terminate.js +0 -86
  103. package/dist/esm/utils/worker_manager.d.ts +0 -25
  104. package/dist/esm/utils/worker_manager.js +0 -72
  105. package/dist/package.json +0 -4
  106. package/src/agent_worker.ts +0 -75
  107. package/src/app_worker.ts +0 -191
  108. package/src/dirname.ts +0 -11
  109. package/src/error/ClusterAgentWorkerError.ts +0 -19
  110. package/src/error/ClusterWorkerExceptionError.ts +0 -17
  111. package/src/error/index.ts +0 -2
  112. package/src/index.ts +0 -26
  113. package/src/master.ts +0 -658
  114. package/src/utils/messenger.ts +0 -207
  115. package/src/utils/mode/base/agent.ts +0 -90
  116. package/src/utils/mode/base/app.ts +0 -119
  117. package/src/utils/mode/impl/process/agent.ts +0 -119
  118. package/src/utils/mode/impl/process/app.ts +0 -140
  119. package/src/utils/mode/impl/worker_threads/agent.ts +0 -99
  120. package/src/utils/mode/impl/worker_threads/app.ts +0 -164
  121. package/src/utils/options.ts +0 -169
  122. package/src/utils/terminate.ts +0 -97
  123. package/src/utils/worker_manager.ts +0 -87
@@ -1,169 +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
- const node_fs_1 = __importDefault(require("node:fs"));
7
- const node_http_1 = require("node:http");
8
- const node_https_1 = require("node:https");
9
- const node_util_1 = require("node:util");
10
- const egg_logger_1 = require("egg-logger");
11
- const utils_1 = require("@eggjs/utils");
12
- const app_js_1 = require("./utils/mode/impl/worker_threads/app.js");
13
- const app_js_2 = require("./utils/mode/impl/process/app.js");
14
- const debug = (0, node_util_1.debuglog)('@eggjs/cluster/app_worker');
15
- async function main() {
16
- // $ node app_worker.js options-json-string
17
- const options = JSON.parse(process.argv[2]);
18
- if (options.require) {
19
- // inject
20
- for (const mod of options.require) {
21
- await (0, utils_1.importModule)(mod);
22
- }
23
- }
24
- let AppWorker;
25
- if (options.startMode === 'worker_threads') {
26
- AppWorker = app_js_1.AppThreadWorker;
27
- }
28
- else {
29
- AppWorker = app_js_2.AppProcessWorker;
30
- }
31
- const consoleLogger = new egg_logger_1.EggConsoleLogger({
32
- level: process.env.EGG_APP_WORKER_LOGGER_LEVEL,
33
- });
34
- const { Application } = await (0, utils_1.importModule)(options.framework);
35
- debug('[app_worker:%s] new Application with options %j', process.pid, options);
36
- let app;
37
- try {
38
- app = new Application(options);
39
- }
40
- catch (err) {
41
- consoleLogger.error(err);
42
- throw err;
43
- }
44
- app.ready(startServer);
45
- function exitProcess() {
46
- // Use SIGTERM kill process, ensure trigger the gracefulExit
47
- AppWorker.kill();
48
- }
49
- // exit if worker start timeout
50
- app.once('startTimeout', startTimeoutHandler);
51
- function startTimeoutHandler() {
52
- consoleLogger.error('[app_worker] start timeout, exiting with code:1');
53
- exitProcess();
54
- }
55
- function startServer(err) {
56
- if (err) {
57
- consoleLogger.error(err);
58
- consoleLogger.error('[app_worker] start error, exiting with code:1');
59
- exitProcess();
60
- return;
61
- }
62
- const clusterConfig = app.config.cluster ?? {};
63
- const listenConfig = clusterConfig.listen ?? {};
64
- const httpsOptions = {
65
- ...clusterConfig.https,
66
- ...options.https,
67
- };
68
- const port = app.options.port = options.port || listenConfig.port;
69
- const debugPort = options.debugPort;
70
- const protocol = (httpsOptions.key && httpsOptions.cert) ? 'https' : 'http';
71
- debug('[app_worker:%s] listenConfig: %j, real port: %o, protocol: %o, debugPort: %o', process.pid, listenConfig, port, protocol, debugPort);
72
- AppWorker.send({
73
- to: 'master',
74
- action: 'realport',
75
- data: {
76
- port,
77
- protocol,
78
- },
79
- });
80
- app.removeListener('startTimeout', startTimeoutHandler);
81
- let server;
82
- let debugPortServer;
83
- // https config
84
- if (protocol === 'https') {
85
- httpsOptions.key = node_fs_1.default.readFileSync(httpsOptions.key);
86
- httpsOptions.cert = node_fs_1.default.readFileSync(httpsOptions.cert);
87
- httpsOptions.ca = httpsOptions.ca && node_fs_1.default.readFileSync(httpsOptions.ca);
88
- server = (0, node_https_1.createServer)(httpsOptions, app.callback());
89
- if (debugPort) {
90
- debugPortServer = (0, node_http_1.createServer)(app.callback());
91
- }
92
- }
93
- else {
94
- server = (0, node_http_1.createServer)(app.callback());
95
- if (debugPort) {
96
- debugPortServer = server;
97
- }
98
- }
99
- server.once('error', (err) => {
100
- consoleLogger.error('[app_worker] server got error: %s, code: %s', err.message, err.code);
101
- exitProcess();
102
- });
103
- // emit `server` event in app
104
- app.emit('server', server);
105
- if (options.sticky && options.stickyWorkerPort) {
106
- // only allow connection from localhost
107
- server.listen(options.stickyWorkerPort, '127.0.0.1');
108
- // Listen to messages was sent from the master. Ignore everything else.
109
- AppWorker.on('message', (message, connection) => {
110
- if (message !== 'sticky-session:connection') {
111
- return;
112
- }
113
- // Emulate a connection event on the server by emitting the
114
- // event with the connection the master sent us.
115
- server.emit('connection', connection);
116
- connection.resume();
117
- });
118
- }
119
- else {
120
- if (listenConfig.path) {
121
- server.listen(listenConfig.path);
122
- }
123
- else {
124
- if (typeof port !== 'number') {
125
- consoleLogger.error('[app_worker:%s] port should be number, but got %s(%s)', process.pid, port, typeof port);
126
- exitProcess();
127
- return;
128
- }
129
- const args = [port];
130
- if (listenConfig.hostname) {
131
- args.push(listenConfig.hostname);
132
- }
133
- debug('listen options %j', args);
134
- server.listen(...args);
135
- }
136
- if (debugPortServer) {
137
- debug('listen on debug port: %s', debugPort);
138
- debugPortServer.listen(debugPort);
139
- }
140
- }
141
- server.once('listening', () => {
142
- let address = server.address() || { port };
143
- if (typeof address === 'string') {
144
- // https://nodejs.org/api/cluster.html#cluster_event_listening_1
145
- // Unix domain socket
146
- address = {
147
- address,
148
- addressType: -1,
149
- };
150
- }
151
- debug('[app_worker:%s] listening at %j', process.pid, address);
152
- AppWorker.send({
153
- to: 'master',
154
- action: 'app-start',
155
- data: {
156
- address,
157
- workerId: AppWorker.workerId,
158
- },
159
- });
160
- });
161
- }
162
- AppWorker.gracefulExit({
163
- logger: consoleLogger,
164
- label: 'app_worker',
165
- beforeExit: () => app.close(),
166
- });
167
- }
168
- main();
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwX3dvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHBfd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQXlCO0FBQ3pCLHlDQUEwRTtBQUMxRSwyQ0FBK0Q7QUFFL0QseUNBQXFDO0FBQ3JDLDJDQUErRDtBQUMvRCx3Q0FBNEM7QUFFNUMsb0VBQTBFO0FBQzFFLDZEQUFvRTtBQUVwRSxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUVwRCxLQUFLLFVBQVUsSUFBSTtJQUNqQiwyQ0FBMkM7SUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQVN6QyxDQUFDO0lBQ0YsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEIsU0FBUztRQUNULEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBQSxvQkFBWSxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUErQixDQUFDO0lBQ3BDLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNDLFNBQVMsR0FBRyx3QkFBc0IsQ0FBQztJQUNyQyxDQUFDO1NBQU0sQ0FBQztRQUNOLFNBQVMsR0FBRyx5QkFBdUIsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSw2QkFBYSxDQUFDO1FBQ3RDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQjtLQUMvQyxDQUFDLENBQUM7SUFDSCxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxJQUFBLG9CQUFZLEVBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlELEtBQUssQ0FBQyxpREFBaUQs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
@@ -1 +0,0 @@
1
- export declare function getSrcDirname(): string;
@@ -1,17 +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.getSrcDirname = getSrcDirname;
7
- const node_url_1 = require("node:url");
8
- const node_path_1 = __importDefault(require("node:path"));
9
- function getSrcDirname() {
10
- if (typeof __dirname !== 'undefined') {
11
- return __dirname;
12
- }
13
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
14
- // @ts-ignore
15
- return node_path_1.default.dirname((0, node_url_1.fileURLToPath)('import_meta_url_placeholder_by_tshy_after'));
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlybmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaXJuYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0Esc0NBT0M7QUFWRCx1Q0FBeUM7QUFDekMsMERBQTZCO0FBRTdCLFNBQWdCLGFBQWE7SUFDM0IsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsNkRBQTZEO0lBQzdELGFBQWE7SUFDYixPQUFPLG1CQUFJLENBQUMsT0FBTyxDQUFDLElBQUEsd0JBQWEsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQyJ9
@@ -1,10 +0,0 @@
1
- export declare class ClusterAgentWorkerError extends Error {
2
- id: number;
3
- /**
4
- * pid in process mode
5
- * tid in worker_threads mode
6
- */
7
- workerId: number;
8
- status: string;
9
- constructor(id: number, workerId: number, status: string, error: Error);
10
- }
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClusterAgentWorkerError = void 0;
4
- class ClusterAgentWorkerError extends Error {
5
- id;
6
- /**
7
- * pid in process mode
8
- * tid in worker_threads mode
9
- */
10
- workerId;
11
- status;
12
- constructor(id, workerId, status, error) {
13
- const message = `Got agent worker error: ${error.message}`;
14
- super(message, { cause: error });
15
- this.name = this.constructor.name;
16
- this.id = id;
17
- this.workerId = workerId;
18
- this.status = status;
19
- Error.captureStackTrace(this, this.constructor);
20
- }
21
- }
22
- exports.ClusterAgentWorkerError = ClusterAgentWorkerError;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckFnZW50V29ya2VyRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXJyb3IvQ2x1c3RlckFnZW50V29ya2VyRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSx1QkFBd0IsU0FBUSxLQUFLO0lBQ2hELEVBQUUsQ0FBUztJQUNYOzs7T0FHRztJQUNILFFBQVEsQ0FBUztJQUNqQixNQUFNLENBQVM7SUFFZixZQUFZLEVBQVUsRUFBRSxRQUFnQixFQUFFLE1BQWMsRUFBRSxLQUFZO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLDJCQUEyQixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFsQkQsMERBa0JDIn0=
@@ -1,7 +0,0 @@
1
- export declare class ClusterWorkerExceptionError extends Error {
2
- count: {
3
- agent: number;
4
- worker: number;
5
- };
6
- constructor(agent: number, worker: number);
7
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClusterWorkerExceptionError = void 0;
4
- class ClusterWorkerExceptionError extends Error {
5
- count;
6
- constructor(agent, worker) {
7
- const message = `[master] ${agent} agent and ${worker} worker(s) alive, exit to avoid unknown state`;
8
- super(message);
9
- this.name = this.constructor.name;
10
- this.count = {
11
- agent,
12
- worker,
13
- };
14
- Error.captureStackTrace(this, this.constructor);
15
- }
16
- }
17
- exports.ClusterWorkerExceptionError = ClusterWorkerExceptionError;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlcldvcmtlckV4Y2VwdGlvbkVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9yL0NsdXN0ZXJXb3JrZXJFeGNlcHRpb25FcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFhLDJCQUE0QixTQUFRLEtBQUs7SUFDcEQsS0FBSyxDQUdIO0lBRUYsWUFBWSxLQUFhLEVBQUUsTUFBYztRQUN2QyxNQUFNLE9BQU8sR0FBRyxZQUFZLEtBQUssY0FBYyxNQUFNLCtDQUErQyxDQUFDO1FBQ3JHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRztZQUNYLEtBQUs7WUFDTCxNQUFNO1NBQ1AsQ0FBQztRQUNGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQWhCRCxrRUFnQkMifQ==
@@ -1,2 +0,0 @@
1
- export * from './ClusterAgentWorkerError.js';
2
- export * from './ClusterWorkerExceptionError.js';
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./ClusterAgentWorkerError.js"), exports);
18
- __exportStar(require("./ClusterWorkerExceptionError.js"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXJyb3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtEQUE2QztBQUM3QyxtRUFBaUQifQ==
@@ -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';
@@ -1,37 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Master = void 0;
18
- exports.startCluster = startCluster;
19
- const master_js_1 = require("./master.js");
20
- Object.defineProperty(exports, "Master", { enumerable: true, get: function () { return master_js_1.Master; } });
21
- /**
22
- * cluster start flow:
23
- *
24
- * [startCluster] -> master -> agent_worker -> new [Agent] -> agentWorkerLoader
25
- * `-> app_worker -> new [Application] -> appWorkerLoader
26
- *
27
- */
28
- /**
29
- * start egg app
30
- * @function Egg#startCluster
31
- * @param {Object} options {@link Master}
32
- */
33
- async function startCluster(options) {
34
- await new master_js_1.Master(options).ready();
35
- }
36
- __exportStar(require("./error/index.js"), exports);
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsb0NBRUM7QUFsQkQsMkNBQW9EO0FBcUJsRCx1RkFyQk8sa0JBQU0sT0FxQlA7QUFsQlI7Ozs7OztHQU1HO0FBRUg7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxZQUFZLENBQUMsT0FBdUI7SUFDeEQsTUFBTSxJQUFJLGtCQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDcEMsQ0FBQztBQU9ELG1EQUFpQyJ9
@@ -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 {};