react-on-rails-pro-node-renderer 16.6.0-rc.0 → 16.6.0
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/lib/master.d.ts.map +1 -1
- package/lib/master.js +56 -4
- package/lib/master.js.map +1 -1
- package/lib/shared/configBuilder.d.ts.map +1 -1
- package/lib/shared/configBuilder.js +15 -0
- package/lib/shared/configBuilder.js.map +1 -1
- package/lib/shared/utils.d.ts +9 -2
- package/lib/shared/utils.d.ts.map +1 -1
- package/lib/shared/utils.js +15 -8
- package/lib/shared/utils.js.map +1 -1
- package/lib/shared/workerMessages.d.ts +13 -0
- package/lib/shared/workerMessages.d.ts.map +1 -0
- package/lib/shared/workerMessages.js +23 -0
- package/lib/shared/workerMessages.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/worker/handleRenderRequest.d.ts +2 -2
- package/lib/worker/handleRenderRequest.d.ts.map +1 -1
- package/lib/worker/handleRenderRequest.js +5 -5
- package/lib/worker/handleRenderRequest.js.map +1 -1
- package/lib/worker/startupErrorHandler.d.ts +10 -0
- package/lib/worker/startupErrorHandler.d.ts.map +1 -0
- package/lib/worker/startupErrorHandler.js +57 -0
- package/lib/worker/startupErrorHandler.js.map +1 -0
- package/lib/worker/vm.js +2 -2
- package/lib/worker/vm.js.map +1 -1
- package/lib/worker.d.ts.map +1 -1
- package/lib/worker.js +73 -9
- package/lib/worker.js.map +1 -1
- package/package.json +2 -2
- package/src/master.ts +64 -4
- package/src/shared/configBuilder.ts +18 -0
- package/src/shared/utils.ts +18 -8
- package/src/shared/workerMessages.ts +34 -0
- package/src/worker/handleRenderRequest.ts +18 -7
- package/src/worker/startupErrorHandler.ts +65 -0
- package/src/worker/vm.ts +2 -2
- package/src/worker.ts +86 -15
- package/tests/configBuilder.test.ts +34 -0
- package/tests/masterStartupFailure.test.ts +295 -0
- package/tests/worker.test.ts +148 -0
- package/tests/workerStartupFailure.test.ts +250 -0
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
* module in isolation and without async calls.
|
|
5
5
|
* @module worker/handleRenderRequest
|
|
6
6
|
*/
|
|
7
|
-
import { Asset, ResponseResult } from '../shared/utils.js';
|
|
7
|
+
import { Asset, ResponseResult, type RequestInfo } from '../shared/utils.js';
|
|
8
8
|
import type { TracingContext } from '../shared/tracing.js';
|
|
9
9
|
export type ProvidedNewBundle = {
|
|
10
10
|
timestamp: string | number;
|
|
11
11
|
bundle: Asset;
|
|
12
12
|
};
|
|
13
|
-
export declare function handleNewBundlesProvided(requestContext:
|
|
13
|
+
export declare function handleNewBundlesProvided(requestContext: RequestInfo, providedNewBundles: ProvidedNewBundle[], assetsToCopy: Asset[] | null | undefined): Promise<ResponseResult | undefined>;
|
|
14
14
|
/**
|
|
15
15
|
* Creates the result for the Fastify server to use.
|
|
16
16
|
* @returns Promise where the result contains { status, data, headers } to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleRenderRequest.d.ts","sourceRoot":"","sources":["../../src/worker/handleRenderRequest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EACL,KAAK,EAKL,cAAc,
|
|
1
|
+
{"version":3,"file":"handleRenderRequest.d.ts","sourceRoot":"","sources":["../../src/worker/handleRenderRequest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EACL,KAAK,EAKL,cAAc,EAKd,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC;CACf,CAAC;AAqIF,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,WAAW,EAC3B,kBAAkB,EAAE,iBAAiB,EAAE,EACvC,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,SAAS,GACvC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAuBrC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,EACxC,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,YAAY,EACZ,cAAc,GACf,EAAE;IACD,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,0BAA0B,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,GAAG,OAAO,CAAC,cAAc,CAAC,CAkE1B"}
|
|
@@ -25,8 +25,8 @@ async function prepareResult(renderingRequest, bundleFilePathPerTimestamp) {
|
|
|
25
25
|
const result = await (0, vm_js_1.runInVM)(renderingRequest, bundleFilePathPerTimestamp, cluster_1.default);
|
|
26
26
|
let exceptionMessage = null;
|
|
27
27
|
if (!result) {
|
|
28
|
-
const error = new Error('INVALID NIL or NULL result for rendering');
|
|
29
|
-
exceptionMessage = (0, utils_js_1.formatExceptionMessage)(renderingRequest, error, 'INVALID result for prepareResult');
|
|
28
|
+
const error = new Error('INVALID NIL or NULL result for rendering. Ensure renderingRequest is a valid string and returns a value.');
|
|
29
|
+
exceptionMessage = (0, utils_js_1.formatExceptionMessage)({ renderingRequest }, error, 'INVALID result for prepareResult');
|
|
30
30
|
}
|
|
31
31
|
else if ((0, utils_js_1.isErrorRenderResult)(result)) {
|
|
32
32
|
({ exceptionMessage } = result);
|
|
@@ -48,7 +48,7 @@ async function prepareResult(renderingRequest, bundleFilePathPerTimestamp) {
|
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
catch (err) {
|
|
51
|
-
const exceptionMessage = (0, utils_js_1.formatExceptionMessage)(renderingRequest, err, 'Unknown error calling runInVM');
|
|
51
|
+
const exceptionMessage = (0, utils_js_1.formatExceptionMessage)({ renderingRequest }, err, 'Unknown error calling runInVM');
|
|
52
52
|
return (0, utils_js_1.errorResponseResult)(exceptionMessage);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -153,7 +153,7 @@ async function handleRenderRequest({ renderingRequest, bundleTimestamp, dependen
|
|
|
153
153
|
}
|
|
154
154
|
// If gem has posted updated bundle:
|
|
155
155
|
if (providedNewBundles && providedNewBundles.length > 0) {
|
|
156
|
-
const result = await handleNewBundlesProvided(renderingRequest, providedNewBundles, assetsToCopy);
|
|
156
|
+
const result = await handleNewBundlesProvided({ renderingRequest }, providedNewBundles, assetsToCopy);
|
|
157
157
|
if (result) {
|
|
158
158
|
return result;
|
|
159
159
|
}
|
|
@@ -180,7 +180,7 @@ async function handleRenderRequest({ renderingRequest, bundleTimestamp, dependen
|
|
|
180
180
|
return await prepareResult(renderingRequest, entryBundleFilePath);
|
|
181
181
|
}
|
|
182
182
|
catch (error) {
|
|
183
|
-
const msg = (0, utils_js_1.formatExceptionMessage)(renderingRequest, error, 'Caught top level error in handleRenderRequest');
|
|
183
|
+
const msg = (0, utils_js_1.formatExceptionMessage)({ renderingRequest }, error, 'Caught top level error in handleRenderRequest');
|
|
184
184
|
return (0, utils_js_1.errorResponseResult)(msg, tracingContext);
|
|
185
185
|
}
|
|
186
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleRenderRequest.js","sourceRoot":"","sources":["../../src/worker/handleRenderRequest.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;
|
|
1
|
+
{"version":3,"file":"handleRenderRequest.js","sourceRoot":"","sources":["../../src/worker/handleRenderRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type StartupListenErrorHandlerOptions = {
|
|
2
|
+
err: Error;
|
|
3
|
+
host: string;
|
|
4
|
+
port: number;
|
|
5
|
+
isWorker?: boolean;
|
|
6
|
+
send?: NodeJS.Process['send'];
|
|
7
|
+
exit?: NodeJS.Process['exit'];
|
|
8
|
+
};
|
|
9
|
+
export declare function handleStartupListenError({ err, host, port, isWorker, send, exit, }: StartupListenErrorHandlerOptions): void;
|
|
10
|
+
//# sourceMappingURL=startupErrorHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startupErrorHandler.d.ts","sourceRoot":"","sources":["../../src/worker/startupErrorHandler.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gCAAgC,GAAG;IAC7C,GAAG,EAAE,KAAK,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EACvC,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,QAA2B,EAC3B,IAAI,EACJ,IAAI,GACL,EAAE,gCAAgC,QA4ClC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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.handleStartupListenError = handleStartupListenError;
|
|
7
|
+
const cluster_1 = __importDefault(require("cluster"));
|
|
8
|
+
const log_js_1 = __importDefault(require("../shared/log.js"));
|
|
9
|
+
const workerMessages_js_1 = require("../shared/workerMessages.js");
|
|
10
|
+
function handleStartupListenError({ err, host, port, isWorker = cluster_1.default.isWorker, send, exit, }) {
|
|
11
|
+
const sendFn = send ?? process.send?.bind(process);
|
|
12
|
+
const exitFn = exit ?? ((code) => process.exit(code));
|
|
13
|
+
log_js_1.default.error({ err, host, port }, 'Node renderer failed to start');
|
|
14
|
+
if (isWorker) {
|
|
15
|
+
if (!sendFn) {
|
|
16
|
+
log_js_1.default.error('Cluster worker has no IPC channel; cannot notify master of startup failure');
|
|
17
|
+
exitFn(1);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const startupFailure = {
|
|
21
|
+
type: workerMessages_js_1.WORKER_STARTUP_FAILURE,
|
|
22
|
+
stage: 'listen',
|
|
23
|
+
code: err.code,
|
|
24
|
+
errno: err.errno,
|
|
25
|
+
syscall: err.syscall,
|
|
26
|
+
host,
|
|
27
|
+
port,
|
|
28
|
+
message: err.message,
|
|
29
|
+
};
|
|
30
|
+
try {
|
|
31
|
+
let exited = false;
|
|
32
|
+
const doExit = (sendErr) => {
|
|
33
|
+
if (exited)
|
|
34
|
+
return;
|
|
35
|
+
exited = true;
|
|
36
|
+
if (sendErr)
|
|
37
|
+
log_js_1.default.error({ err: sendErr }, 'Failed to send startup failure message to master');
|
|
38
|
+
exitFn(1);
|
|
39
|
+
};
|
|
40
|
+
sendFn(startupFailure, undefined, undefined, doExit);
|
|
41
|
+
// Safety net: if the IPC channel is half-broken the callback may never
|
|
42
|
+
// fire, leaving this worker alive indefinitely. Force exit after a timeout.
|
|
43
|
+
const IPC_SEND_TIMEOUT_MS = 2000;
|
|
44
|
+
const timer = setTimeout(() => doExit(), IPC_SEND_TIMEOUT_MS);
|
|
45
|
+
if (typeof timer.unref === 'function')
|
|
46
|
+
timer.unref();
|
|
47
|
+
}
|
|
48
|
+
catch (sendErr) {
|
|
49
|
+
log_js_1.default.error({ err: sendErr }, 'Failed to send startup failure message to master');
|
|
50
|
+
exitFn(1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
exitFn(1);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=startupErrorHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startupErrorHandler.js","sourceRoot":"","sources":["../../src/worker/startupErrorHandler.ts"],"names":[],"mappings":";;;;;AAaA,4DAmDC;AAhED,sDAA8B;AAC9B,8DAAmC;AACnC,mEAAuG;AAWvG,SAAgB,wBAAwB,CAAC,EACvC,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,QAAQ,GAAG,iBAAO,CAAC,QAAQ,EAC3B,IAAI,EACJ,IAAI,GAC6B;IACjC,MAAM,MAAM,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,gBAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,+BAA+B,CAAC,CAAC;IAEhE,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,gBAAG,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;YACxF,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAgC;YAClD,IAAI,EAAE,0CAAsB;YAC5B,KAAK,EAAE,QAAQ;YACf,IAAI,EAAG,GAA6B,CAAC,IAAI;YACzC,KAAK,EAAG,GAA6B,CAAC,KAAK;YAC3C,OAAO,EAAG,GAA6B,CAAC,OAAO;YAC/C,IAAI;YACJ,IAAI;YACJ,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC;QACF,IAAI,CAAC;YACH,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,MAAM,MAAM,GAAG,CAAC,OAAsB,EAAE,EAAE;gBACxC,IAAI,MAAM;oBAAE,OAAO;gBACnB,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,OAAO;oBAAE,gBAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,kDAAkD,CAAC,CAAC;gBAC7F,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC;YACF,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACrD,uEAAuE;YACvE,4EAA4E;YAC5E,MAAM,mBAAmB,GAAG,IAAI,CAAC;YACjC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC;YAC9D,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;gBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,gBAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAgB,EAAE,EAAE,kDAAkD,CAAC,CAAC;YACzF,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/lib/worker/vm.js
CHANGED
|
@@ -138,7 +138,7 @@ ${(0, utils_js_1.smartTrim)(renderingRequest)}`);
|
|
|
138
138
|
});
|
|
139
139
|
if ((0, utils_js_1.isReadableStream)(result)) {
|
|
140
140
|
const newStreamAfterHandlingError = (0, utils_js_1.handleStreamError)(result, (error) => {
|
|
141
|
-
const msg = (0, utils_js_1.formatExceptionMessage)(renderingRequest, error, 'Error in a rendering stream');
|
|
141
|
+
const msg = (0, utils_js_1.formatExceptionMessage)({ renderingRequest }, error, 'Error in a rendering stream');
|
|
142
142
|
errorReporter.message(msg);
|
|
143
143
|
});
|
|
144
144
|
return newStreamAfterHandlingError;
|
|
@@ -157,7 +157,7 @@ ${(0, utils_js_1.smartTrim)(result)}`);
|
|
|
157
157
|
return result;
|
|
158
158
|
}
|
|
159
159
|
catch (exception) {
|
|
160
|
-
const exceptionMessage = (0, utils_js_1.formatExceptionMessage)(renderingRequest, exception);
|
|
160
|
+
const exceptionMessage = (0, utils_js_1.formatExceptionMessage)({ renderingRequest }, exception);
|
|
161
161
|
log_js_1.default.debug('Caught exception in rendering request: %s', exceptionMessage);
|
|
162
162
|
return Promise.resolve({ exceptionMessage });
|
|
163
163
|
}
|
package/lib/worker/vm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vm.js","sourceRoot":"","sources":["../../src/worker/vm.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"vm.js","sourceRoot":"","sources":["../../src/worker/vm.ts"],"names":[],"mappings":"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"}
|
package/lib/worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAe,MAAM,EAAa,MAAM,2BAA2B,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAe,MAAM,EAAa,MAAM,2BAA2B,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,mBAAmB,CAAC;AAUvF,OAAO,EAML,KAAK,EAEN,MAAM,mBAAmB,CAAC;AAU3B,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAU,aAAa;QAErB,KAAK,EAAE,KAAK,CAAC;KACd;CACF;AAED,OAAO,QAAQ,SAAS,CAAC;IAEvB,UAAU,cAAc;QACtB,SAAS,EAAE,MAAM,CAAC;KACnB;CACF;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;AAInE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,qBAAqB,QAErE;AAqED,eAAO,MAAM,YAAY,YAExB,CAAC;AAoEF,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;;EAsUlD"}
|
package/lib/worker.js
CHANGED
|
@@ -58,6 +58,7 @@ const checkProtocolVersionHandler_js_1 = __importDefault(require("./worker/check
|
|
|
58
58
|
const authHandler_js_1 = __importDefault(require("./worker/authHandler.js"));
|
|
59
59
|
const handleRenderRequest_js_1 = require("./worker/handleRenderRequest.js");
|
|
60
60
|
const handleGracefulShutdown_js_1 = __importDefault(require("./worker/handleGracefulShutdown.js"));
|
|
61
|
+
const startupErrorHandler_js_1 = require("./worker/startupErrorHandler.js");
|
|
61
62
|
const utils_js_1 = require("./shared/utils.js");
|
|
62
63
|
const tracing_js_1 = require("./shared/tracing.js");
|
|
63
64
|
const fastifyConfigFunctions = [];
|
|
@@ -134,6 +135,49 @@ const disableHttp2 = () => {
|
|
|
134
135
|
useHttp2 = false;
|
|
135
136
|
};
|
|
136
137
|
exports.disableHttp2 = disableHttp2;
|
|
138
|
+
const INVALID_CONTENT_LENGTH_ERROR_CODE = 'FST_ERR_CTP_INVALID_CONTENT_LENGTH';
|
|
139
|
+
const errorCode = (error) => {
|
|
140
|
+
const code = error?.code;
|
|
141
|
+
return typeof code === 'string' ? code : undefined;
|
|
142
|
+
};
|
|
143
|
+
const isValidRenderingRequest = (value) => typeof value === 'string' && value.length > 0;
|
|
144
|
+
const SENSITIVE_REQUEST_BODY_KEYS = new Set([
|
|
145
|
+
'password',
|
|
146
|
+
'token',
|
|
147
|
+
'secret',
|
|
148
|
+
'api_key',
|
|
149
|
+
'api-key',
|
|
150
|
+
'apikey',
|
|
151
|
+
'authorization',
|
|
152
|
+
'auth_token',
|
|
153
|
+
'auth-token',
|
|
154
|
+
'authtoken',
|
|
155
|
+
'access_token',
|
|
156
|
+
'accesstoken',
|
|
157
|
+
'bearer',
|
|
158
|
+
'credentials',
|
|
159
|
+
]);
|
|
160
|
+
const invalidRenderingRequestMessage = (body) => {
|
|
161
|
+
const { renderingRequest } = body;
|
|
162
|
+
let renderingRequestType = typeof renderingRequest;
|
|
163
|
+
if (renderingRequest === null) {
|
|
164
|
+
renderingRequestType = 'null';
|
|
165
|
+
}
|
|
166
|
+
else if (Array.isArray(renderingRequest)) {
|
|
167
|
+
renderingRequestType = 'array';
|
|
168
|
+
}
|
|
169
|
+
else if (renderingRequest === '') {
|
|
170
|
+
renderingRequestType = 'empty string';
|
|
171
|
+
}
|
|
172
|
+
const bodyKeys = Object.keys(body).filter((key) => key !== 'renderingRequest' && !SENSITIVE_REQUEST_BODY_KEYS.has(key.toLowerCase()));
|
|
173
|
+
return [
|
|
174
|
+
'Invalid "renderingRequest" field in render request.',
|
|
175
|
+
'Expected a non-empty string of JavaScript to execute in the SSR VM.',
|
|
176
|
+
`Received type: ${renderingRequestType}.`,
|
|
177
|
+
`Received body keys: ${bodyKeys.length > 0 ? bodyKeys.join(', ') : '(none)'}.`,
|
|
178
|
+
'Likely causes: request body truncation, malformed multipart form data, or Content-Length mismatch in a proxy/client.',
|
|
179
|
+
].join('\n');
|
|
180
|
+
};
|
|
137
181
|
const extractBodyArrayField = (body, key) => {
|
|
138
182
|
const value = body[key] ?? body[`${key}[]`];
|
|
139
183
|
if (Array.isArray(value)) {
|
|
@@ -162,7 +206,18 @@ function run(config) {
|
|
|
162
206
|
// We shouldn't have unhandled errors here, but just in case
|
|
163
207
|
app.addHook('onError', (req, res, err, done) => {
|
|
164
208
|
// Not errorReporter.error so that integrations can decide how to log the errors.
|
|
165
|
-
|
|
209
|
+
if (errorCode(err) === INVALID_CONTENT_LENGTH_ERROR_CODE) {
|
|
210
|
+
app.log.error({
|
|
211
|
+
msg: 'Invalid request body framing',
|
|
212
|
+
hint: 'Body size did not match Content-Length. Check client/proxy truncation and Content-Length handling.',
|
|
213
|
+
err,
|
|
214
|
+
req,
|
|
215
|
+
res,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
app.log.error({ msg: 'Unhandled Fastify error', err, req, res });
|
|
220
|
+
}
|
|
166
221
|
done();
|
|
167
222
|
});
|
|
168
223
|
// Each request gets its own upload directory to prevent concurrent requests
|
|
@@ -265,11 +320,20 @@ function run(config) {
|
|
|
265
320
|
//
|
|
266
321
|
// await delay(100000);
|
|
267
322
|
// }
|
|
268
|
-
const {
|
|
323
|
+
const { body } = req;
|
|
324
|
+
if (!body || typeof body !== 'object') {
|
|
325
|
+
await setResponse((0, utils_js_1.badRequestResponseResult)('Invalid or missing request body.'), res);
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
const { renderingRequest } = body;
|
|
329
|
+
if (!isValidRenderingRequest(renderingRequest)) {
|
|
330
|
+
await setResponse((0, utils_js_1.badRequestResponseResult)(invalidRenderingRequestMessage(body)), res);
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
269
333
|
const { bundleTimestamp } = req.params;
|
|
270
|
-
const { providedNewBundles, assetsToCopy } = extractBundlesAndAssets(
|
|
334
|
+
const { providedNewBundles, assetsToCopy } = extractBundlesAndAssets(body, bundleTimestamp);
|
|
271
335
|
try {
|
|
272
|
-
const dependencyBundleTimestamps = extractBodyArrayField(
|
|
336
|
+
const dependencyBundleTimestamps = extractBodyArrayField(body, 'dependencyBundleTimestamps');
|
|
273
337
|
await (0, tracing_js_1.trace)(async (context) => {
|
|
274
338
|
try {
|
|
275
339
|
const result = await (0, handleRenderRequest_js_1.handleRenderRequest)({
|
|
@@ -283,13 +347,13 @@ function run(config) {
|
|
|
283
347
|
await setResponse(result, res);
|
|
284
348
|
}
|
|
285
349
|
catch (err) {
|
|
286
|
-
const exceptionMessage = (0, utils_js_1.formatExceptionMessage)(renderingRequest, err, 'UNHANDLED error in handleRenderRequest');
|
|
350
|
+
const exceptionMessage = (0, utils_js_1.formatExceptionMessage)({ renderingRequest }, err, 'UNHANDLED error in handleRenderRequest');
|
|
287
351
|
await setResponse((0, utils_js_1.errorResponseResult)(exceptionMessage, context), res);
|
|
288
352
|
}
|
|
289
353
|
}, (0, tracing_js_1.startSsrRequestOptions)({ renderingRequest }));
|
|
290
354
|
}
|
|
291
355
|
catch (theErr) {
|
|
292
|
-
const exceptionMessage = (0, utils_js_1.formatExceptionMessage)(renderingRequest, theErr);
|
|
356
|
+
const exceptionMessage = (0, utils_js_1.formatExceptionMessage)({ renderingRequest }, theErr);
|
|
293
357
|
await setResponse((0, utils_js_1.errorResponseResult)(`Unhandled top level error: ${exceptionMessage}`), res);
|
|
294
358
|
}
|
|
295
359
|
});
|
|
@@ -318,7 +382,7 @@ function run(config) {
|
|
|
318
382
|
// endpoint so that concurrent /upload-assets and render requests
|
|
319
383
|
// targeting the same bundle directory are mutually exclusive.
|
|
320
384
|
// See https://github.com/shakacode/react_on_rails/issues/2463
|
|
321
|
-
const result = await (0, handleRenderRequest_js_1.handleNewBundlesProvided)(taskDescription, providedNewBundles, assetsToCopy);
|
|
385
|
+
const result = await (0, handleRenderRequest_js_1.handleNewBundlesProvided)({ label: 'Request:', content: taskDescription }, providedNewBundles, assetsToCopy);
|
|
322
386
|
if (result) {
|
|
323
387
|
await setResponse(result, res);
|
|
324
388
|
return;
|
|
@@ -381,8 +445,8 @@ function run(config) {
|
|
|
381
445
|
if (workersCount === 0 || cluster_1.default.isWorker) {
|
|
382
446
|
app.listen({ port, host }, (err, address) => {
|
|
383
447
|
if (err) {
|
|
384
|
-
|
|
385
|
-
|
|
448
|
+
(0, startupErrorHandler_js_1.handleStartupListenError)({ err, host, port });
|
|
449
|
+
return;
|
|
386
450
|
}
|
|
387
451
|
const workerName = worker ? `worker #${worker.id}` : 'master (single-process)';
|
|
388
452
|
log_js_1.default.info({ workerName, address }, 'Node renderer listening');
|
package/lib/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-on-rails-pro-node-renderer",
|
|
3
|
-
"version": "16.6.0
|
|
3
|
+
"version": "16.6.0",
|
|
4
4
|
"protocolVersion": "2.0.0",
|
|
5
5
|
"description": "React on Rails Pro Node Renderer for server-side rendering",
|
|
6
6
|
"main": "lib/ReactOnRailsProNodeRenderer.js",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"sentry-testkit": "^5.0.6",
|
|
61
61
|
"touch": "^3.1.0",
|
|
62
62
|
"typescript": "^5.4.3",
|
|
63
|
-
"react-on-rails": "16.6.0
|
|
63
|
+
"react-on-rails": "16.6.0"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
66
|
"@honeybadger-io/js": ">=4.0.0",
|
package/src/master.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { buildConfig, Config, logSanitizedConfig } from './shared/configBuilder.
|
|
|
10
10
|
import restartWorkers from './master/restartWorkers.js';
|
|
11
11
|
import * as errorReporter from './shared/errorReporter.js';
|
|
12
12
|
import { getLicenseStatus } from './shared/licenseValidator.js';
|
|
13
|
+
import { isWorkerStartupFailureMessage, type WorkerStartupFailureMessage } from './shared/workerMessages.js';
|
|
13
14
|
|
|
14
15
|
const MILLISECONDS_IN_MINUTE = 60000;
|
|
15
16
|
// How often to scan for orphaned upload directories.
|
|
@@ -77,22 +78,81 @@ export default function masterRun(runningConfig?: Partial<Config>) {
|
|
|
77
78
|
})();
|
|
78
79
|
}, ORPHAN_CLEANUP_INTERVAL_MS);
|
|
79
80
|
|
|
81
|
+
let isAbortingForStartupFailure = false;
|
|
82
|
+
let fatalStartupFailure: { workerId: number; failure: WorkerStartupFailureMessage } | null = null;
|
|
83
|
+
let hasInitiatedShutdown = false;
|
|
84
|
+
|
|
85
|
+
const abortForStartupFailure = (): boolean => {
|
|
86
|
+
if (!(isAbortingForStartupFailure && fatalStartupFailure)) return false;
|
|
87
|
+
|
|
88
|
+
if (!hasInitiatedShutdown) {
|
|
89
|
+
hasInitiatedShutdown = true;
|
|
90
|
+
// Note: the exiting worker may differ from the one that sent the
|
|
91
|
+
// failure message if multiple workers exit in rapid succession.
|
|
92
|
+
// We always report the first failure received.
|
|
93
|
+
const { failure, workerId: failedWorkerId } = fatalStartupFailure;
|
|
94
|
+
const msg =
|
|
95
|
+
failure.code === 'EADDRINUSE'
|
|
96
|
+
? `Node renderer startup failed: ${failure.host}:${failure.port} is already in use`
|
|
97
|
+
: `Node renderer startup failed in worker ${failedWorkerId}: ${failure.message}`;
|
|
98
|
+
|
|
99
|
+
errorReporter.message(msg);
|
|
100
|
+
// Disconnect all live workers so they release their ports before the
|
|
101
|
+
// master exits. cluster.disconnect() is async — the callback fires
|
|
102
|
+
// once every worker has disconnected. A hard-deadline timer guarantees
|
|
103
|
+
// the master still exits if a worker is stuck (leaked handle, blocking
|
|
104
|
+
// syscall, etc.), following the same pattern as restartWorkers.ts.
|
|
105
|
+
const MASTER_SHUTDOWN_TIMEOUT_MS = 5000;
|
|
106
|
+
const shutdownTimer = setTimeout(() => process.exit(1), MASTER_SHUTDOWN_TIMEOUT_MS);
|
|
107
|
+
if (typeof shutdownTimer.unref === 'function') shutdownTimer.unref();
|
|
108
|
+
cluster.disconnect(() => {
|
|
109
|
+
clearTimeout(shutdownTimer);
|
|
110
|
+
process.exit(1);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return true;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
cluster.on('message', (worker, message) => {
|
|
118
|
+
// Check the abort flag first to short-circuit the type-guard on every
|
|
119
|
+
// ordinary IPC message once we are already aborting.
|
|
120
|
+
if (isAbortingForStartupFailure || !isWorkerStartupFailureMessage(message)) return;
|
|
121
|
+
|
|
122
|
+
isAbortingForStartupFailure = true;
|
|
123
|
+
fatalStartupFailure = { workerId: worker.id, failure: message };
|
|
124
|
+
});
|
|
125
|
+
|
|
80
126
|
for (let i = 0; i < workersCount; i += 1) {
|
|
81
127
|
cluster.fork();
|
|
82
128
|
}
|
|
83
129
|
|
|
84
130
|
// Listen for dying workers:
|
|
85
131
|
cluster.on('exit', (worker) => {
|
|
132
|
+
// Once a startup failure has been detected, abort regardless of whether
|
|
133
|
+
// this particular exit was from the failing worker, a scheduled restart,
|
|
134
|
+
// or an unrelated crash. Don't fork any more workers.
|
|
135
|
+
if (abortForStartupFailure()) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
|
|
86
139
|
if (worker.isScheduledRestart) {
|
|
87
140
|
log.info('Restarting worker #%d on schedule', worker.id);
|
|
88
|
-
|
|
141
|
+
cluster.fork();
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Give in-flight startup-failure IPC messages one event-loop turn to be
|
|
146
|
+
// processed before classifying this as an ordinary runtime crash.
|
|
147
|
+
setImmediate(() => {
|
|
148
|
+
if (abortForStartupFailure()) return;
|
|
149
|
+
|
|
89
150
|
// TODO: Track last rendering request per worker.id
|
|
90
151
|
// TODO: Consider blocking a given rendering request if it kills a worker more than X times
|
|
91
152
|
const msg = `Worker ${worker.id} died UNEXPECTEDLY :(, restarting`;
|
|
92
153
|
errorReporter.message(msg);
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
cluster.fork();
|
|
154
|
+
cluster.fork();
|
|
155
|
+
});
|
|
96
156
|
});
|
|
97
157
|
|
|
98
158
|
// Schedule regular restarts of workers
|
|
@@ -142,6 +142,13 @@ function logLevel(level: string): LevelWithSilent {
|
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
+
function validatePort(port: number): string | null {
|
|
146
|
+
if (!Number.isInteger(port) || !Number.isFinite(port) || port < 0 || port > 65535) {
|
|
147
|
+
return `RENDERER_PORT must be an integer between 0 and 65535. Received: ${String(port)}`;
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
|
|
145
152
|
function normalizedRuntimeEnvs() {
|
|
146
153
|
return [env.RAILS_ENV, env.NODE_ENV]
|
|
147
154
|
.filter((value): value is string => Boolean(value))
|
|
@@ -380,6 +387,17 @@ export function buildConfig(providedUserConfig?: Partial<Config>): Config {
|
|
|
380
387
|
}
|
|
381
388
|
});
|
|
382
389
|
|
|
390
|
+
// Coerce port to a number — user configs frequently pass env-derived strings
|
|
391
|
+
// (e.g. `port: env.RENDERER_PORT || 3800` yields the string "3800").
|
|
392
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion -- runtime value may be string despite the type
|
|
393
|
+
config.port = Number(config.port);
|
|
394
|
+
|
|
395
|
+
const portValidationError = validatePort(config.port);
|
|
396
|
+
if (portValidationError) {
|
|
397
|
+
log.error(portValidationError);
|
|
398
|
+
process.exit(1);
|
|
399
|
+
}
|
|
400
|
+
|
|
383
401
|
if (
|
|
384
402
|
'honeybadgerApiKey' in config ||
|
|
385
403
|
'sentryDsn' in config ||
|
package/src/shared/utils.ts
CHANGED
|
@@ -49,25 +49,35 @@ export interface ResponseResult {
|
|
|
49
49
|
stream?: Readable;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
const NO_CACHE_HEADERS = { 'Cache-Control': 'no-cache, no-store, max-age=0, must-revalidate' } as const;
|
|
53
|
+
|
|
54
|
+
export function badRequestResponseResult(msg: string): ResponseResult {
|
|
54
55
|
return {
|
|
55
|
-
headers:
|
|
56
|
+
headers: NO_CACHE_HEADERS,
|
|
56
57
|
status: 400,
|
|
57
58
|
data: msg,
|
|
58
59
|
};
|
|
59
60
|
}
|
|
60
61
|
|
|
62
|
+
export function errorResponseResult(msg: string, tracingContext?: TracingContext): ResponseResult {
|
|
63
|
+
errorReporter.message(msg, tracingContext);
|
|
64
|
+
return badRequestResponseResult(msg);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export type RequestInfo = { renderingRequest: string } | { label: string; content: string };
|
|
61
68
|
/**
|
|
62
|
-
* @param
|
|
69
|
+
* @param request Either a rendering request (auto-labeled) or a { label, content } pair
|
|
63
70
|
* @param error The error that was thrown (typed as `unknown` to minimize casts in `catch`)
|
|
64
71
|
* @param context Optional context to include in the error message
|
|
65
72
|
*/
|
|
66
|
-
export function formatExceptionMessage(
|
|
73
|
+
export function formatExceptionMessage(request: RequestInfo, error: unknown, context?: string) {
|
|
74
|
+
const label = 'renderingRequest' in request ? 'JS code for rendering request was:' : request.label;
|
|
75
|
+
const content = 'renderingRequest' in request ? request.renderingRequest : request.content;
|
|
76
|
+
|
|
67
77
|
return `${context ? `\nContext:\n${context}\n` : ''}
|
|
68
|
-
|
|
69
|
-
${smartTrim(
|
|
70
|
-
|
|
78
|
+
${label}
|
|
79
|
+
${smartTrim(content)}
|
|
80
|
+
|
|
71
81
|
EXCEPTION MESSAGE:
|
|
72
82
|
${(error as Error).message || error}
|
|
73
83
|
|