diff --git a/packages/cli-repl/src/cli-repl.spec.ts b/packages/cli-repl/src/cli-repl.spec.ts index 8d54d03339..73fda608c2 100644 --- a/packages/cli-repl/src/cli-repl.spec.ts +++ b/packages/cli-repl/src/cli-repl.spec.ts @@ -817,6 +817,17 @@ describe('CliRepl', () => { expect(apiEvents[0].properties.count).to.equal(1); }); + it('includes a statement about flushed telemetry in the log', async() => { + await cliRepl.start(await testServer.connectionString(), {}); + const { logFilePath } = cliRepl.logWriter; + input.write('db.hello()\n'); + input.write('exit\n'); + await waitBus(cliRepl.bus, 'mongosh:closed'); + const flushEntry = (await readReplLogfile(logFilePath)).find(entry => entry.id === 1_000_000_045); + expect(flushEntry.attr.flushError).to.equal(null); + expect(flushEntry.attr.flushDuration).to.be.a('number'); + }); + context('with a 5.0+ server', () => { skipIfServerVersion(testServer, '<= 4.4'); diff --git a/packages/cli-repl/src/cli-repl.ts b/packages/cli-repl/src/cli-repl.ts index 04aaff3a9f..acf5e1c965 100644 --- a/packages/cli-repl/src/cli-repl.ts +++ b/packages/cli-repl/src/cli-repl.ts @@ -500,13 +500,25 @@ class CliRepl { } this.closing = true; const analytics = this.analytics; + let flushError: string | null = null; + let flushDuration: number | null = null; if (analytics) { + const flushStart = Date.now(); try { await promisify(analytics.flush.bind(analytics))(); - } catch { /* ignore */ } + } catch (err: any) { + flushError = err.message; + } finally { + flushDuration = Date.now() - flushStart; + } } this.mongocryptdManager.close(); - await this.logWriter?.flush?.(); + // eslint-disable-next-line chai-friendly/no-unused-expressions + this.logWriter?.info('MONGOSH', mongoLogId(1_000_000_045), 'analytics', 'Flushed outstanding data', { + flushError, + flushDuration + }); + await this.logWriter?.flush(); this.bus.emit('mongosh:closed'); } diff --git a/packages/logging/src/setup-logger-and-telemetry.ts b/packages/logging/src/setup-logger-and-telemetry.ts index f2423d3327..81f493d535 100644 --- a/packages/logging/src/setup-logger-and-telemetry.ts +++ b/packages/logging/src/setup-logger-and-telemetry.ts @@ -488,4 +488,6 @@ export function setupLoggerAndTelemetry( error: ev.error.message }); }); + + // NB: mongoLogId(1_000_000_045) is used in cli-repl itself }