chore: Improve graceful server shutdown (#4625)

* chore: Improve graceful server shutdown

* Replace node timers with custom promise timeout
This commit is contained in:
Tom Moor
2022-12-31 21:56:27 +00:00
committed by GitHub
parent ad9525bfa3
commit 05a4f050bb
16 changed files with 160 additions and 20 deletions

View File

@@ -28,7 +28,9 @@ class Logger {
output: winston.Logger;
constructor() {
this.output = winston.createLogger();
this.output = winston.createLogger({
level: isProduction ? "info" : "debug",
});
this.output.add(
new winston.transports.Console({
format: isProduction

View File

@@ -1,5 +1,6 @@
import ddMetrics from "datadog-metrics";
import env from "@server/env";
import ShutdownHelper, { ShutdownOrder } from "@server/utils/ShutdownHelper";
class Metrics {
enabled = !!env.DD_API_KEY;
@@ -14,6 +15,8 @@ class Metrics {
prefix: "outline.",
defaultTags: [`env:${process.env.DD_ENV ?? env.ENVIRONMENT}`],
});
ShutdownHelper.add("metrics", ShutdownOrder.last, () => this.flush());
}
gauge(key: string, value: number, tags?: string[]): void {
@@ -42,6 +45,16 @@ class Metrics {
return ddMetrics.increment(key);
}
flush(): Promise<void> {
if (!this.enabled) {
return Promise.resolve();
}
return new Promise((resolve, reject) => {
ddMetrics.flush(resolve, reject);
});
}
}
export default new Metrics();