@abyss-project/monitor 1.0.65 → 1.0.67
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.
|
@@ -5,10 +5,9 @@ const request_tracker_utils_1 = require("../utils/request-tracker.utils");
|
|
|
5
5
|
const graceful_shutdown_types_1 = require("../types/graceful-shutdown.types");
|
|
6
6
|
const killable_route_utils_1 = require("../utils/killable-route.utils");
|
|
7
7
|
const createRequestTrackerMiddleware = (options) => {
|
|
8
|
-
const {
|
|
8
|
+
const { isKillable } = options || {};
|
|
9
9
|
return (req, res, next) => {
|
|
10
10
|
const requestIsKillable = isKillable ? isKillable(req) : (0, killable_route_utils_1.isRouteKillable)(res);
|
|
11
|
-
logger === null || logger === void 0 ? void 0 : logger.info(`Incoming request ${req.method} ${req.url} killable: ${requestIsKillable}`);
|
|
12
11
|
if ((0, request_tracker_utils_1.getIsShuttingDown)()) {
|
|
13
12
|
res.status(503).json({
|
|
14
13
|
errorCode: graceful_shutdown_types_1.GracefulShutdownErrorCode.SERVICE_UNAVAILABLE,
|
|
@@ -14,11 +14,13 @@ export interface ICloseableResource {
|
|
|
14
14
|
close: () => Promise<void> | void;
|
|
15
15
|
name?: string;
|
|
16
16
|
}
|
|
17
|
+
export interface IHttpServer {
|
|
18
|
+
close: (callback: (err?: Error) => void) => void;
|
|
19
|
+
closeAllConnections?: () => void;
|
|
20
|
+
}
|
|
17
21
|
export interface IGracefulShutdownConfig {
|
|
18
22
|
logger: Logger;
|
|
19
|
-
httpServer?:
|
|
20
|
-
close: (callback: (err?: Error) => void) => void;
|
|
21
|
-
};
|
|
23
|
+
httpServer?: IHttpServer;
|
|
22
24
|
databases?: ICloseableResource[];
|
|
23
25
|
messageQueues?: ICloseableResource[];
|
|
24
26
|
caches?: ICloseableResource[];
|
|
@@ -67,7 +67,13 @@ const setupGracefulShutdown = (config) => {
|
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
+
if (httpServer === null || httpServer === void 0 ? void 0 : httpServer.closeAllConnections) {
|
|
71
|
+
logger.log('Force closing all remaining HTTP connections (SSE, WebSocket, long-lived)...');
|
|
72
|
+
httpServer.closeAllConnections();
|
|
73
|
+
logger.log('All remaining HTTP connections forcefully closed');
|
|
74
|
+
}
|
|
70
75
|
if (httpServer) {
|
|
76
|
+
logger.log('Closing HTTP server to stop accepting new connections...');
|
|
71
77
|
await new Promise((resolve, reject) => {
|
|
72
78
|
httpServer.close((err) => {
|
|
73
79
|
if (err) {
|