MCPcopy
hub / github.com/codeaashu/claude-code / flushTelemetry

Function flushTelemetry

src/utils/telemetry/instrumentation.ts:707–747  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

705 * This should be called before logout or org switching to prevent data leakage.
706 */
707export async function flushTelemetry(): Promise<void> {
708 const meterProvider = getMeterProvider()
709 if (!meterProvider) {
710 return
711 }
712
713 const timeoutMs = parseInt(
714 process.env.CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS || '5000',
715 )
716
717 try {
718 const flushPromises = [meterProvider.forceFlush()]
719 const loggerProvider = getLoggerProvider()
720 if (loggerProvider) {
721 flushPromises.push(loggerProvider.forceFlush())
722 }
723 const tracerProvider = getTracerProvider()
724 if (tracerProvider) {
725 flushPromises.push(tracerProvider.forceFlush())
726 }
727
728 await Promise.race([
729 Promise.all(flushPromises),
730 telemetryTimeout(timeoutMs, 'OpenTelemetry flush timeout'),
731 ])
732
733 logForDebugging('Telemetry flushed successfully')
734 } catch (error) {
735 if (error instanceof TelemetryTimeoutError) {
736 logForDebugging(
737 `Telemetry flush timed out after ${timeoutMs}ms. Some metrics may not be exported.`,
738 { level: 'warn' },
739 )
740 } else {
741 logForDebugging(`Telemetry flush failed: ${errorMessage(error)}`, {
742 level: 'error',
743 })
744 }
745 // Don't throw - allow logout to continue even if flush fails
746 }
747}
748
749function parseOtelHeadersEnvVar(): Record<string, string> {
750 const headers: Record<string, string> = {}

Callers 1

performLogoutFunction · 0.85

Calls 8

getMeterProviderFunction · 0.85
getLoggerProviderFunction · 0.85
getTracerProviderFunction · 0.85
telemetryTimeoutFunction · 0.85
logForDebuggingFunction · 0.85
errorMessageFunction · 0.50
forceFlushMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected