diff --git a/packages/effect/src/internal/core-effect.ts b/packages/effect/src/internal/core-effect.ts index 1686f9f306d..c6bd336ff42 100644 --- a/packages/effect/src/internal/core-effect.ts +++ b/packages/effect/src/internal/core-effect.ts @@ -2053,7 +2053,7 @@ export const makeSpan = ( core.sync(() => { const enabled = FiberRefs.getOrDefault(fiberRefs, core.currentTracerEnabled) if (enabled === false) { - return core.noopSpan + return core.noopSpan(name) } const context = FiberRefs.getOrDefault(fiberRefs, core.currentContext) diff --git a/packages/effect/src/internal/core.ts b/packages/effect/src/internal/core.ts index 2f26473ca24..4be6c274aaa 100644 --- a/packages/effect/src/internal/core.ts +++ b/packages/effect/src/internal/core.ts @@ -3091,8 +3091,7 @@ export const currentSpanFromFiber = (fiber: Fiber.RuntimeFiber): Opt return span !== undefined && span._tag === "Span" ? Option.some(span) : Option.none() } -/** @internal */ -export const noopSpan: Tracer.Span = globalValue("effect/Tracer/noopSpan", () => ({ +const NoopSpanProto: Tracer.Span = { _tag: "Span", spanId: "noop", traceId: "noop", @@ -3111,4 +3110,11 @@ export const noopSpan: Tracer.Span = globalValue("effect/Tracer/noopSpan", () => attribute() {}, event() {}, end() {} -})) +} + +/** @internal */ +export const noopSpan = (name: string): Tracer.Span => { + const span = Object.create(NoopSpanProto) + span.name = name + return span +} diff --git a/packages/effect/test/Tracer.test.ts b/packages/effect/test/Tracer.test.ts index e6ab5eaf9be..80334fdc9fd 100644 --- a/packages/effect/test/Tracer.test.ts +++ b/packages/effect/test/Tracer.test.ts @@ -272,7 +272,8 @@ describe("Tracer", () => { Effect.withTracerEnabled(true) ) - assert.deepEqual(span.name, "noop") + assert.deepEqual(span.name, "A") + assert.deepEqual(span.spanId, "noop") assert.deepEqual(spanB.name, "B") })) })