summaryrefslogtreecommitdiff
path: root/packages/backend/src/boot
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/boot')
-rw-r--r--packages/backend/src/boot/index.ts2
-rw-r--r--packages/backend/src/boot/master.ts37
-rw-r--r--packages/backend/src/boot/worker.ts20
3 files changed, 39 insertions, 20 deletions
diff --git a/packages/backend/src/boot/index.ts b/packages/backend/src/boot/index.ts
index c3d0592256..f67b09b1cc 100644
--- a/packages/backend/src/boot/index.ts
+++ b/packages/backend/src/boot/index.ts
@@ -2,7 +2,7 @@ import cluster from 'node:cluster';
import chalk from 'chalk';
import Xev from 'xev';
-import Logger from '@/services/logger.js';
+import Logger from '@/logger.js';
import { envOption } from '../env.js';
// for typeorm
diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts
index bf51960482..ec09b4350b 100644
--- a/packages/backend/src/boot/master.ts
+++ b/packages/backend/src/boot/master.ts
@@ -6,14 +6,17 @@ import cluster from 'node:cluster';
import chalk from 'chalk';
import chalkTemplate from 'chalk-template';
import semver from 'semver';
-
-import Logger from '@/services/logger.js';
-import loadConfig from '@/config/load.js';
-import { Config } from '@/config/types.js';
-import { lessThan } from '@/prelude/array.js';
-import { envOption } from '../env.js';
+import { NestFactory } from '@nestjs/core';
+import Logger from '@/logger.js';
+import { loadConfig } from '@/config.js';
+import type { Config } from '@/config.js';
+import { lessThan } from '@/misc/prelude/array.js';
import { showMachineInfo } from '@/misc/show-machine-info.js';
-import { db, initDb } from '../db/postgre.js';
+import { DaemonModule } from '@/daemons/DaemonModule.js';
+import { JanitorService } from '@/daemons/JanitorService.js';
+import { QueueStatsService } from '@/daemons/QueueStatsService.js';
+import { ServerStatsService } from '@/daemons/ServerStatsService.js';
+import { envOption } from '../env.js';
const _filename = fileURLToPath(import.meta.url);
const _dirname = dirname(_filename);
@@ -60,7 +63,7 @@ export async function masterMain() {
await showMachineInfo(bootLogger);
showNodejsVersion();
config = loadConfigBoot();
- await connectDb();
+ //await connectDb();
} catch (e) {
bootLogger.error('Fatal error occurred during initialization', null, true);
process.exit(1);
@@ -75,9 +78,11 @@ export async function masterMain() {
bootLogger.succ(`Now listening on port ${config.port} on ${config.url}`, null, true);
if (!envOption.noDaemons) {
- import('../daemons/server-stats.js').then(x => x.default());
- import('../daemons/queue-stats.js').then(x => x.default());
- import('../daemons/janitor.js').then(x => x.default());
+ const daemons = await NestFactory.createApplicationContext(DaemonModule);
+ daemons.enableShutdownHooks();
+ daemons.get(JanitorService).start();
+ daemons.get(QueueStatsService).start();
+ daemons.get(ServerStatsService).start();
}
}
@@ -127,6 +132,7 @@ function loadConfigBoot(): Config {
return config;
}
+/*
async function connectDb(): Promise<void> {
const dbLogger = bootLogger.createSubLogger('db');
@@ -136,14 +142,15 @@ async function connectDb(): Promise<void> {
await initDb();
const v = await db.query('SHOW server_version').then(x => x[0].server_version);
dbLogger.succ(`Connected: v${v}`);
- } catch (e) {
+ } catch (err) {
dbLogger.error('Cannot connect', null, true);
- dbLogger.error(e);
+ dbLogger.error(err);
process.exit(1);
}
}
+*/
-async function spawnWorkers(limit: number = 1) {
+async function spawnWorkers(limit = 1) {
const workers = Math.min(limit, os.cpus().length);
bootLogger.info(`Starting ${workers} worker${workers === 1 ? '' : 's'}...`);
await Promise.all([...Array(workers)].map(spawnWorker));
@@ -155,7 +162,7 @@ function spawnWorker(): Promise<void> {
const worker = cluster.fork();
worker.on('message', message => {
if (message === 'listenFailed') {
- bootLogger.error(`The server Listen failed due to the previous error.`);
+ bootLogger.error('The server Listen failed due to the previous error.');
process.exit(1);
}
if (message !== 'ready') return;
diff --git a/packages/backend/src/boot/worker.ts b/packages/backend/src/boot/worker.ts
index 8038e25631..91f0c76317 100644
--- a/packages/backend/src/boot/worker.ts
+++ b/packages/backend/src/boot/worker.ts
@@ -1,17 +1,29 @@
import cluster from 'node:cluster';
-import { initDb } from '../db/postgre.js';
+import { NestFactory } from '@nestjs/core';
+import { envOption } from '@/env.js';
+import { ChartManagementService } from '@/core/chart/ChartManagementService.js';
+import { ServerService } from '@/server/ServerService.js';
+import { QueueProcessorService } from '@/queue/QueueProcessorService.js';
+import { AppModule } from '../AppModule.js';
/**
* Init worker process
*/
export async function workerMain() {
- await initDb();
+ const app = await NestFactory.createApplicationContext(AppModule);
+ app.enableShutdownHooks();
// start server
- await import('../server/index.js').then(x => x.default());
+ const serverService = app.get(ServerService);
+ serverService.launch();
// start job queue
- import('../queue/index.js').then(x => x.default());
+ if (!envOption.onlyServer) {
+ const queueProcessorService = app.get(QueueProcessorService);
+ queueProcessorService.start();
+ }
+
+ app.get(ChartManagementService).run();
if (cluster.isWorker) {
// Send a 'ready' message to parent process