matrix-public-archive/server/lib
Eric Eastwood f6bd581f77
Better `child_process` error handling v2 - timeouts and actually fail process for error in scope (#62)
Follow-up to https://github.com/matrix-org/matrix-public-archive/pull/51

Better `child_process` error handling for a couple scenarios with the finger pointing at it 👉

Also make sure we handle all of these scenarios:

 1. Child process fork script throws an `uncaughtException` or `unhandledRejection`
    - These are captured and serialized back to the parent and stored in `childErrors` and exposed if we never get a successful rendered HTML response.
 2. Child process fails to startup 
    - Render process is rejected in the `child.on('error', ...` callback
 3. 👉 Child process times out and is aborted
    - Render process is rejected in the `child.on('error', ...` callback and any `childErrors` encountered are logged
 4. 👉 Child process fork script throws an error in scope of in `process.on('message', async (renderOptions) => {`
    - Child exits with code 1 and we reject the render process with the error
 5. Child process exits with code 1 (error)
    - Render process is rejected with any `childError` info
 6. Child process exits with code 0 (success) but never sends back any HTML
    - We have a `returnedData` data check and any child errors encountered are logged
2022-09-02 18:49:45 -05:00
..
config.js Use JSON5 for configuration files with comments (#52) 2022-08-29 20:33:02 -05:00
express-async-handler.js Fix lints 2022-02-15 21:33:31 -06:00
fetch-endpoint.js Make sure container is able to start up (#23) 2022-06-15 17:12:44 -05:00
rethrown-error.js Better `child_process` error handling v2 - timeouts and actually fail process for error in scope (#62) 2022-09-02 18:49:45 -05:00
safe-json.js OpenTelemetry tracing so we can see spans where the app is taking time (#27) 2022-07-14 11:08:50 -05:00
sanitize-html.js OpenTelemetry tracing so we can see spans where the app is taking time (#27) 2022-07-14 11:08:50 -05:00
status-error.js Stop restarting server when the client bundle updates 2022-02-15 17:30:30 -06:00