chore: Improve graceful server shutdown (#4625)
* chore: Improve graceful server shutdown * Replace node timers with custom promise timeout
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user