11import { ProxyTracerProvider , context , propagation , trace } from '@opentelemetry/api' ;
22import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base' ;
3- import type { ClientOptions , Options } from '@sentry/core' ;
3+ import type { ClientOptions , Options } from '@sentry/core' ;
4+ import { getClient } from '@sentry/core' ;
45
5- import { getCurrentScope , getGlobalScope , getIsolationScope } from '@sentry/core' ;
6+ import { getCurrentScope , getGlobalScope , getIsolationScope , flush } from '@sentry/core' ;
67import { setOpenTelemetryContextAsyncContextStrategy } from '../../src/asyncContextStrategy' ;
78import { clearOpenTelemetrySetupCheck } from '../../src/utils/setupCheck' ;
89import { init as initTestClient } from './TestClient' ;
910import { initOtel } from './initOtel' ;
11+ import type { OpenTelemetryClient } from '../../src/types' ;
1012
1113const PUBLIC_DSN = 'https://username@domain/123' ;
1214
@@ -33,25 +35,26 @@ export function mockSdkInit(options?: Partial<ClientOptions>) {
3335 init ( { dsn : PUBLIC_DSN , ...options } ) ;
3436}
3537
36- export function cleanupOtel ( _provider ?: BasicTracerProvider ) : void {
38+ export async function cleanupOtel ( _provider ?: BasicTracerProvider ) : Promise < void > {
3739 clearOpenTelemetrySetupCheck ( ) ;
40+
3841 const provider = getProvider ( _provider ) ;
3942
40- if ( ! provider ) {
41- return ;
43+ if ( provider ) {
44+ await provider . forceFlush ( ) ;
45+ await provider . shutdown ( ) ;
4246 }
4347
44- void provider . forceFlush ( ) ;
45- void provider . shutdown ( ) ;
46-
4748 // Disable all globally registered APIs
4849 trace . disable ( ) ;
4950 context . disable ( ) ;
5051 propagation . disable ( ) ;
52+
53+ await flush ( ) ;
5154}
5255
5356export function getProvider ( _provider ?: BasicTracerProvider ) : BasicTracerProvider | undefined {
54- let provider = _provider || trace . getTracerProvider ( ) ;
57+ let provider = _provider || getClient < OpenTelemetryClient > ( ) ?. traceProvider || trace . getTracerProvider ( ) ;
5558
5659 if ( provider instanceof ProxyTracerProvider ) {
5760 provider = provider . getDelegate ( ) ;
0 commit comments