Skip to content

Commit 9e66e40

Browse files
committed
chore: rebase on ah-context refactor
1 parent 15bdab5 commit 9e66e40

File tree

3 files changed

+16
-32
lines changed

3 files changed

+16
-32
lines changed

packages/opentelemetry-node/src/NodeTracer.ts

+11-8
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,34 @@ import { setActiveSpan } from '@opentelemetry/core';
1919
import { Tracer } from '@opentelemetry/tracing';
2020
import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks';
2121

22+
type UnPromisify<T> = T extends Promise<infer U> ? U : T;
23+
2224
/**
2325
* This class represents a nodejs-specific tracer.
2426
*/
2527
export class NodeTracer extends Tracer {
2628
/**
27-
* Execute the provided function with the given span in the current context.
29+
* Execute the provided function with the given span set in the current context.
2830
*
2931
* **NOTE**: This function is experimental, refer to to
3032
* https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-node#withspanasync
3133
*/
32-
async withSpanAsync<T extends any, U extends () => Promise<T>>(
33-
span: api.Span,
34-
fn: U
35-
): Promise<void> {
34+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
35+
async withSpanAsync<
36+
T extends () => Promise<any>,
37+
U = UnPromisify<ReturnType<T>>
38+
>(span: api.Span, fn: T): Promise<U> {
3639
const contextManager = api.context.getContextManager();
3740
if (contextManager instanceof AsyncHooksContextManager) {
38-
await contextManager.withAsync(
41+
return await contextManager.withAsync(
3942
setActiveSpan(api.context.active(), span),
4043
fn
4144
);
4245
} else {
4346
this.logger.warn(
44-
`Using withAsync without AsyncHookContextManager doesn't work, please refer to https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-node#withspanasync`
47+
"Using withAsync without AsyncHookContextManager doesn't work, please refer to https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-node#withspanasync"
4548
);
46-
await fn();
49+
return await fn();
4750
}
4851
}
4952
}

packages/opentelemetry-node/test/NodeTracerProvider.test.ts

+1-20
Original file line numberDiff line numberDiff line change
@@ -232,25 +232,6 @@ describe('NodeTracerProvider', () => {
232232
undefined
233233
);
234234
});
235-
236-
it('should find correct context with promises', async () => {
237-
provider = new NodeTracerProvider();
238-
const span = provider.getTracer('default').startSpan('my-span');
239-
await provider.getTracer('default').withSpan(span, async () => {
240-
for (let i = 0; i < 3; i++) {
241-
await sleep(5).then(() => {
242-
assert.deepStrictEqual(
243-
provider.getTracer('default').getCurrentSpan(),
244-
span
245-
);
246-
});
247-
}
248-
});
249-
assert.deepStrictEqual(
250-
provider.getTracer('default').getCurrentSpan(),
251-
undefined
252-
);
253-
});
254235
});
255236

256237
describe('.bind()', () => {
@@ -288,7 +269,7 @@ describe('NodeTracerProvider', () => {
288269

289270
it('should run context with AsyncHooksContextManager with multiple spans', async () => {
290271
provider = new NodeTracerProvider({});
291-
let nestedHasBeenRun: boolean = false;
272+
let nestedHasBeenRun = false;
292273
const span = provider.getTracer('default').startSpan('my-span');
293274
await provider.getTracer('default').withSpanAsync(span, async () => {
294275
assert.deepStrictEqual(

packages/opentelemetry-node/test/registration.test.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ describe('API registration', () => {
3838
tracerProvider.register();
3939

4040
assert.ok(
41-
context['_getContextManager']() instanceof AsyncHooksContextManager
41+
context.getContextManager() instanceof AsyncHooksContextManager
4242
);
4343
assert.ok(
4444
propagation['_getGlobalPropagator']() instanceof HttpTraceContext
@@ -57,7 +57,7 @@ describe('API registration', () => {
5757
propagator,
5858
});
5959

60-
assert.ok(context['_getContextManager']() === contextManager);
60+
assert.ok(context.getContextManager() === contextManager);
6161
assert.ok(propagation['_getGlobalPropagator']() === propagator);
6262

6363
assert.ok(trace.getTracerProvider() === tracerProvider);
@@ -69,7 +69,7 @@ describe('API registration', () => {
6969
contextManager: null,
7070
});
7171

72-
assert.ok(context['_getContextManager']() instanceof NoopContextManager);
72+
assert.ok(context.getContextManager() instanceof NoopContextManager);
7373

7474
assert.ok(
7575
propagation['_getGlobalPropagator']() instanceof HttpTraceContext
@@ -88,7 +88,7 @@ describe('API registration', () => {
8888
);
8989

9090
assert.ok(
91-
context['_getContextManager']() instanceof AsyncHooksContextManager
91+
context.getContextManager() instanceof AsyncHooksContextManager
9292
);
9393
assert.ok(trace.getTracerProvider() === tracerProvider);
9494
});

0 commit comments

Comments
 (0)