From 44618e591aebbcfe6dd6c3f3c1d9f7a95367d7f8 Mon Sep 17 00:00:00 2001 From: Santiago Quiroga Date: Wed, 22 Jul 2026 15:33:40 -0500 Subject: [PATCH 1/2] fix(firestore): prevent adding telemetry events to ended spans (#8847) --- handwritten/firestore/dev/src/telemetry/span.ts | 3 +++ handwritten/firestore/dev/test/tracing.ts | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/handwritten/firestore/dev/src/telemetry/span.ts b/handwritten/firestore/dev/src/telemetry/span.ts index c4ed1ed0af85..667661787936 100644 --- a/handwritten/firestore/dev/src/telemetry/span.ts +++ b/handwritten/firestore/dev/src/telemetry/span.ts @@ -29,6 +29,9 @@ export class Span { } addEvent(name: string, attributes?: Attributes): this { + if (this.span?.isRecording?.() === false) { + return this; + } this.span = this.span?.addEvent(name, attributes); return this; } diff --git a/handwritten/firestore/dev/test/tracing.ts b/handwritten/firestore/dev/test/tracing.ts index 88928fb2e5a5..e8c34db5db40 100644 --- a/handwritten/firestore/dev/test/tracing.ts +++ b/handwritten/firestore/dev/test/tracing.ts @@ -185,4 +185,16 @@ describe('Firestore Tracing Controls', () => { ); } }); + + it('safely handles addEvent calls on ended spans without throwing', () => { + const tracerProvider = new NodeTracerProvider(); + const tracer = tracerProvider.getTracer('test-tracer'); + const otelSpan = tracer.startSpan('test-span'); + const span = new (require('../src/telemetry/span').Span)(otelSpan); + + span.end(); + expect(() => { + span.addEvent('late-event', {key: 'value'}); + }).to.not.throw(); + }); }); From 36742db858bda525175b521f97cb9dc6bbc0b9c1 Mon Sep 17 00:00:00 2001 From: Santiago Quiroga Date: Thu, 23 Jul 2026 11:32:10 -0500 Subject: [PATCH 2/2] build(firestore): pin brace-expansion override for Node 18 engine compatibility (#8847) --- handwritten/firestore/package.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/handwritten/firestore/package.json b/handwritten/firestore/package.json index df5d2f16a557..1eed7d17d652 100644 --- a/handwritten/firestore/package.json +++ b/handwritten/firestore/package.json @@ -117,10 +117,18 @@ }, "//_comment": "TODO: Remove @sinonjs/fake-timers overrides/resolutions when version > 15.3.0 fixes the duplicate identifier 'withGlobal' issue.", "overrides": { - "@sinonjs/fake-timers": "15.1.1" + "@sinonjs/fake-timers": "15.1.1", + "brace-expansion": "^2.0.1" }, "resolutions": { - "@sinonjs/fake-timers": "15.1.1" + "@sinonjs/fake-timers": "15.1.1", + "brace-expansion": "^2.0.1" + }, + "pnpm": { + "overrides": { + "@sinonjs/fake-timers": "15.1.1", + "brace-expansion": "^2.0.1" + } }, "exports": { ".": {