diff --git a/handwritten/spanner/src/metrics/metrics-tracer-factory.ts b/handwritten/spanner/src/metrics/metrics-tracer-factory.ts index d928c6fa832..24eba573f3c 100644 --- a/handwritten/spanner/src/metrics/metrics-tracer-factory.ts +++ b/handwritten/spanner/src/metrics/metrics-tracer-factory.ts @@ -305,7 +305,8 @@ export class MetricsTracerFactory { * @param requestId The request id of the gRPC call set under 'x-goog-spanner-request-id'. */ public clearCurrentTracer(requestId: string) { - const operationRequest = this._extractOperationRequest(requestId); + const operationRequest = + this._extractOperationRequest(requestId) || requestId; if (!this._currentOperationTracers.has(operationRequest)) { return; } diff --git a/handwritten/spanner/test/metrics/metrics-tracer-factory.ts b/handwritten/spanner/test/metrics/metrics-tracer-factory.ts index c5db377aeac..78dc1d27a13 100644 --- a/handwritten/spanner/test/metrics/metrics-tracer-factory.ts +++ b/handwritten/spanner/test/metrics/metrics-tracer-factory.ts @@ -158,6 +158,22 @@ describe('MetricsTracerFactory', () => { assert.ok(tracer); }); + it('should clear a MetricsTracer using an extracted operation request id', () => { + const factory = MetricsTracerFactory.getInstance('project-id'); + factory!.createMetricsTracer( + 'some-method', + 'method-name', + '1.1a2bc3d4.1.1.1.1', + ); + + assert.strictEqual((factory as any)._currentOperationTracers.size, 1); + + factory!.clearCurrentTracer('1.1a2bc3d4.1.1.1'); + + assert.strictEqual((factory as any)._currentOperationTracers.size, 0); + assert.strictEqual((factory as any)._currentOperationLastUpdatedMs.size, 0); + }); + it('should correctly set default attributes', () => { const factory = MetricsTracerFactory.getInstance('project-id'); const tracer = factory!.createMetricsTracer(