From a9a36237aa5fb7e20c044a5dc252786f28acf958 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Tue, 4 Aug 2026 15:33:54 +0100 Subject: [PATCH] Use logger.exit in expire-deleted user/project scripts (#36169) * add logger.exit method to avoid logs being lost by process.exit * use logger.exit in expire deleted projects and users scripts * improve comment for EXIT_DELAY Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * convert to async * await logger.exit in expire deleted projects and users scripts --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> GitOrigin-RevId: 020d5cc2755871e5343130029706fe3b1c8e15ee --- libraries/logger/logging-manager.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libraries/logger/logging-manager.js b/libraries/logger/logging-manager.js index 6c6912444f..56ef50203e 100644 --- a/libraries/logger/logging-manager.js +++ b/libraries/logger/logging-manager.js @@ -1,4 +1,5 @@ const Stream = require('node:stream') +const { setTimeout } = require('node:timers/promises') const bunyan = require('bunyan') const GCPManager = require('./gcp-manager') const Serializers = require('./serializers') @@ -11,6 +12,9 @@ const { setLogger: setValidationToolsLogger, } = require('@overleaf/validation-tools') +// Delay (ms) before exiting to allow final logs to be flushed. +const EXIT_DELAY = 500 + const LoggingManager = { /** * @param {string} name - The name of the logger @@ -100,6 +104,16 @@ const LoggingManager = { this.logger.fatal(attributes, message) }, + /** + * Exit after a delay to ensure that log messages are flushed + * @param {number} code + */ + + async exit(code) { + await setTimeout(EXIT_DELAY) + process.exit(code) + }, + _getOutputStreamConfig() { switch (process.env.LOGGING_FORMAT) { case 'gke': {