summaryrefslogtreecommitdiff
path: root/packages/backend/src/boot
diff options
context:
space:
mode:
authorJulia <julia@insertdomain.name>2025-06-19 21:35:18 +0000
committerJulia <julia@insertdomain.name>2025-06-19 21:35:18 +0000
commita77c32b17da63d3932b219f74152cce023a30f4a (patch)
treed2a05796e942c8f250bbd01369eab0cbe5a14531 /packages/backend/src/boot
parentmerge: release 2025.4.2 (!1051) (diff)
parentMerge branch 'develop' into release/2025.4.3 (diff)
downloadsharkey-a77c32b17da63d3932b219f74152cce023a30f4a.tar.gz
sharkey-a77c32b17da63d3932b219f74152cce023a30f4a.tar.bz2
sharkey-a77c32b17da63d3932b219f74152cce023a30f4a.zip
merge: prepare release 2025.4.3 (!1125)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1125 Approved-by: Marie <github@yuugi.dev> Approved-by: Julia <julia@insertdomain.name>
Diffstat (limited to 'packages/backend/src/boot')
-rw-r--r--packages/backend/src/boot/entry.ts40
-rw-r--r--packages/backend/src/boot/master.ts14
2 files changed, 40 insertions, 14 deletions
diff --git a/packages/backend/src/boot/entry.ts b/packages/backend/src/boot/entry.ts
index 735a0f4666..afb48e526c 100644
--- a/packages/backend/src/boot/entry.ts
+++ b/packages/backend/src/boot/entry.ts
@@ -9,6 +9,7 @@
import cluster from 'node:cluster';
import { EventEmitter } from 'node:events';
+import { inspect } from 'node:util';
import chalk from 'chalk';
import Xev from 'xev';
import Logger from '@/logger.js';
@@ -53,20 +54,45 @@ async function main() {
// Display detail of unhandled promise rejection
if (!envOption.quiet) {
- process.on('unhandledRejection', console.dir);
+ process.on('unhandledRejection', e => {
+ try {
+ logger.error('Unhandled rejection:', inspect(e));
+ } catch {
+ console.error('Unhandled rejection:', inspect(e));
+ }
+ });
}
// Display detail of uncaught exception
- process.on('uncaughtException', err => {
+ process.on('uncaughtExceptionMonitor', ((err, origin) => {
try {
- logger.error(err);
- console.trace(err);
- } catch { }
- });
+ logger.error(`Uncaught exception (${origin}):`, err);
+ } catch {
+ console.error(`Uncaught exception (${origin}):`, err);
+ }
+ }));
// Dying away...
+ process.on('disconnect', () => {
+ try {
+ logger.warn('IPC channel disconnected! The process may soon die.');
+ } catch {
+ console.warn('IPC channel disconnected! The process may soon die.');
+ }
+ });
+ process.on('beforeExit', code => {
+ try {
+ logger.warn(`Event loop died! Process will exit with code ${code}.`);
+ } catch {
+ console.warn(`Event loop died! Process will exit with code ${code}.`);
+ }
+ });
process.on('exit', code => {
- logger.info(`The process is going to exit with code ${code}`);
+ try {
+ logger.info(`The process is going to exit with code ${code}`);
+ } catch {
+ console.info(`The process is going to exit with code ${code}`);
+ }
});
//#endregion
diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts
index 538c529106..a90228eabc 100644
--- a/packages/backend/src/boot/master.ts
+++ b/packages/backend/src/boot/master.ts
@@ -74,7 +74,7 @@ export async function masterMain() {
process.exit(1);
}
- bootLogger.succ('Sharkey initialized');
+ bootLogger.info('Sharkey initialized');
if (config.sentryForBackend) {
Sentry.init({
@@ -140,10 +140,10 @@ export async function masterMain() {
}
if (envOption.onlyQueue) {
- bootLogger.succ('Queue started', null, true);
+ bootLogger.info('Queue started', null, true);
} else {
const addressString = net.isIPv6(config.address) ? `[${config.address}]` : config.address;
- bootLogger.succ(config.socket ? `Now listening on socket ${config.socket} on ${config.url}` : `Now listening on ${addressString}:${config.port} on ${config.url}`, null, true);
+ bootLogger.info(config.socket ? `Now listening on socket ${config.socket} on ${config.url}` : `Now listening on ${addressString}:${config.port} on ${config.url}`, null, true);
}
}
@@ -172,7 +172,7 @@ function loadConfigBoot(): Config {
config = loadConfig();
} catch (exception) {
if (typeof exception === 'string') {
- configLogger.error(exception);
+ configLogger.error('Exception loading config:', exception);
process.exit(1);
} else if ((exception as any).code === 'ENOENT') {
configLogger.error('Configuration file not found', null, true);
@@ -181,7 +181,7 @@ function loadConfigBoot(): Config {
throw exception;
}
- configLogger.succ('Loaded');
+ configLogger.info('Loaded');
return config;
}
@@ -195,7 +195,7 @@ async function connectDb(): Promise<void> {
dbLogger.info('Connecting...');
await initDb();
const v = await db.query('SHOW server_version').then(x => x[0].server_version);
- dbLogger.succ(`Connected: v${v}`);
+ dbLogger.info(`Connected: v${v}`);
} catch (err) {
dbLogger.error('Cannot connect', null, true);
dbLogger.error(err);
@@ -211,7 +211,7 @@ async function spawnWorkers(limit = 1) {
bootLogger.info(`Starting ${workers} worker${workers === 1 ? '' : 's'}...`);
await Promise.all([...Array(workers)].map(spawnWorker));
- bootLogger.succ('All workers started');
+ bootLogger.info('All workers started');
}
function spawnWorker(): Promise<void> {