summary refs log tree commit diff
path: root/src/api
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-05-28 10:38:39 +0200
committerRory& <root@rory.gay>2026-05-28 10:38:39 +0200
commitb1b73d45e7ab798975400fa8be68a2ba2238e782 (patch)
treeb6018ed851fa0e78937599c9f79f6be9f69ce51c /src/api
parentConcurrent identify stress script (diff)
downloadserver-ts-b1b73d45e7ab798975400fa8be68a2ba2238e782.tar.xz
Process lifecycle scripts
#Conflicts:
#	src/api/Server.ts
#	src/bundle/Server.ts
#	src/cdn/Server.ts
#	src/gateway/Server.ts
#	src/gateway/events/Connection.ts
#	src/util/util/ipc/listener/RabbitMqSingleListener.ts
#	src/util/util/ipc/listener/UnixSocketListener.ts
#	src/util/util/ipc/writer/UnixSocketWriter.ts
#	src/webrtc/Server.ts
Diffstat (limited to 'src/api')
-rw-r--r--src/api/Server.ts10
-rw-r--r--src/api/routes/stop.ts7
2 files changed, 11 insertions, 6 deletions
diff --git a/src/api/Server.ts b/src/api/Server.ts

index 1d9fe2ab..a1eb1716 100644 --- a/src/api/Server.ts +++ b/src/api/Server.ts
@@ -16,15 +16,16 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import { Config, ConnectionConfig, ConnectionLoader, Email, JSONReplacer, WebAuthn, initDatabase, initEvent, registerRoutes, getDatabase, getRevInfoOrFail } from "@spacebar/util"; -import { Authentication, CORS, ImageProxy, BodyParser, ErrorHandler, initRateLimits, initTranslation } from "./middlewares"; +import path from "node:path"; import { Request, Response, Router } from "express"; -import { Server, ServerOptions } from "lambert-server"; import morgan from "morgan"; -import path from "node:path"; +import { Server, ServerOptions } from "lambert-server"; import { red } from "picocolors"; +import { Config, ConnectionConfig, ConnectionLoader, Email, JSONReplacer, WebAuthn, initDatabase, initEvent, registerRoutes, getDatabase, getRevInfoOrFail } from "@spacebar/util"; +import { Authentication, CORS, ImageProxy, BodyParser, ErrorHandler, initRateLimits, initTranslation } from "./middlewares"; import { initInstance } from "./util/handlers/Instance"; import { route } from "./util"; +import { ProcessLifecycle } from "../util/util/ProcessLifecycle"; const ASSETS_FOLDER = path.join(__dirname, "..", "..", "assets"); const PUBLIC_ASSETS_FOLDER = path.join(ASSETS_FOLDER, "public"); @@ -196,6 +197,7 @@ export class SpacebarServer extends Server { if (logRequests) console.log(red(`Warning: Request logging is enabled! This will spam your console!\nTo disable this, unset the 'LOG_REQUESTS' environment variable!`)); + await ProcessLifecycle.Ready(); return super.start(); } } diff --git a/src/api/routes/stop.ts b/src/api/routes/stop.ts
index 4f869735..e04b46ba 100644 --- a/src/api/routes/stop.ts +++ b/src/api/routes/stop.ts
@@ -16,8 +16,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import { route } from "@spacebar/api"; +import { route, SpacebarServer } from "@spacebar/api"; import { Request, Response, Router } from "express"; +import { ProcessLifecycle } from "../../util/util/ProcessLifecycle"; const router: Router = Router({ mergeParams: true }); @@ -35,7 +36,9 @@ router.post( (req: Request, res: Response) => { console.log(`/stop was called by ${req.user_id} at ${new Date()}`); res.sendStatus(200); - process.kill(process.pid, "SIGTERM"); + ProcessLifecycle.Shutdown().catch((e) => { + console.error("Failed to shut down:", e); + }); }, );