From 57732ca685d1a10ab15cb2c27fc69b7343221a76 Mon Sep 17 00:00:00 2001 From: Surbhi Garg Date: Wed, 3 Jun 2026 19:47:32 +0530 Subject: [PATCH] perf(spanner): precompute common headers --- handwritten/spanner/src/database.ts | 10 +++++----- handwritten/spanner/src/instance.ts | 10 +++++----- handwritten/spanner/src/session.ts | 11 ++--------- handwritten/spanner/src/transaction.ts | 11 ++--------- handwritten/spanner/test/database.ts | 3 +++ handwritten/spanner/test/instance.ts | 3 +++ handwritten/spanner/test/session.ts | 4 ++++ handwritten/spanner/test/transaction.ts | 4 ++++ 8 files changed, 28 insertions(+), 28 deletions(-) diff --git a/handwritten/spanner/src/database.ts b/handwritten/spanner/src/database.ts index 145018db064f..38ddef26d14e 100644 --- a/handwritten/spanner/src/database.ts +++ b/handwritten/spanner/src/database.ts @@ -92,8 +92,8 @@ import { RequestCallback, ResourceCallback, Schema, + CLOUD_RESOURCE_HEADER, addLeaderAwareRoutingHeader, - getCommonHeaders, } from './common'; import {finished, Duplex, Readable, Transform} from 'stream'; import {PreciseDate} from '@google-cloud/precise-date'; @@ -490,10 +490,10 @@ class Database extends common.GrpcServiceObject { this._clientId = instance._nthClientId; } this._observabilityOptions = instance._observabilityOptions; - this.commonHeaders_ = getCommonHeaders( - this.formattedName_, - this._observabilityOptions?.enableEndToEndTracing, - ); + this.commonHeaders_ = { + ...instance.commonHeaders_, + [CLOUD_RESOURCE_HEADER]: this.formattedName_, + }; // eslint-disable-next-line @typescript-eslint/no-explicit-any this.requestStream = instance.requestStream as any; diff --git a/handwritten/spanner/src/instance.ts b/handwritten/spanner/src/instance.ts index 25e7dc5272c8..2315d781663d 100644 --- a/handwritten/spanner/src/instance.ts +++ b/handwritten/spanner/src/instance.ts @@ -31,7 +31,7 @@ import { NormalCallback, ResourceCallback, PagedOptionsWithFilter, - getCommonHeaders, + CLOUD_RESOURCE_HEADER, } from './common'; import {Duplex} from 'stream'; import {SessionPoolOptions, SessionPool} from './session-pool'; @@ -239,10 +239,10 @@ class Instance extends common.GrpcServiceObject { this.requestStream = spanner.requestStream.bind(spanner); this.databases_ = new Map(); this._observabilityOptions = spanner._observabilityOptions; - this.commonHeaders_ = getCommonHeaders( - this.formattedName_, - this._observabilityOptions?.enableEndToEndTracing, - ); + this.commonHeaders_ = { + ...spanner.commonHeaders_, + [CLOUD_RESOURCE_HEADER]: this.formattedName_, + }; } /** diff --git a/handwritten/spanner/src/session.ts b/handwritten/spanner/src/session.ts index b0dfa814b47f..3ebc728ed1ac 100644 --- a/handwritten/spanner/src/session.ts +++ b/handwritten/spanner/src/session.ts @@ -36,11 +36,7 @@ import { CreateSessionOptions, } from './database'; import {ServiceObjectConfig} from '@google-cloud/common'; -import { - NormalCallback, - addLeaderAwareRoutingHeader, - getCommonHeaders, -} from './common'; +import {NormalCallback, addLeaderAwareRoutingHeader} from './common'; import {ObservabilityOptions} from './instrument'; import {grpc, CallOptions} from 'google-gax'; import IRequestOptions = google.spanner.v1.IRequestOptions; @@ -261,10 +257,7 @@ export class Session extends common.GrpcServiceObject { } as {} as ServiceObjectConfig); this._observabilityOptions = database._observabilityOptions; - this.commonHeaders_ = getCommonHeaders( - (this.parent as Database).formattedName_, - this._observabilityOptions?.enableEndToEndTracing, - ); + this.commonHeaders_ = {...database.commonHeaders_}; this.request = database.request; this.requestStream = database.requestStream; diff --git a/handwritten/spanner/src/transaction.ts b/handwritten/spanner/src/transaction.ts index 75d4b2d00794..e0bdfb54ebd8 100644 --- a/handwritten/spanner/src/transaction.ts +++ b/handwritten/spanner/src/transaction.ts @@ -34,11 +34,7 @@ import {Session} from './session'; import {Key} from './table'; import {Span} from './instrument'; import {google as spannerClient} from '../protos/protos'; -import { - NormalCallback, - addLeaderAwareRoutingHeader, - getCommonHeaders, -} from './common'; +import {NormalCallback, addLeaderAwareRoutingHeader} from './common'; import {google} from '../protos/protos'; import IsolationLevel = google.spanner.v1.TransactionOptions.IsolationLevel; import IAny = google.protobuf.IAny; @@ -374,10 +370,7 @@ export class Snapshot extends EventEmitter { this._waitingRequests = []; this._inlineBeginStarted = false; this._observabilityOptions = session._observabilityOptions; - this.commonHeaders_ = getCommonHeaders( - this._dbName, - this._observabilityOptions?.enableEndToEndTracing, - ); + this.commonHeaders_ = {...session.commonHeaders_}; this._traceConfig = { opts: this._observabilityOptions, dbName: this._dbName, diff --git a/handwritten/spanner/test/database.ts b/handwritten/spanner/test/database.ts index 394ad7f35ff6..106587cef083 100644 --- a/handwritten/spanner/test/database.ts +++ b/handwritten/spanner/test/database.ts @@ -271,6 +271,9 @@ describe('Database', () => { formattedName_: 'instance-name', databases_: new Map(), parent: SPANNER, + commonHeaders_: { + [AFE_SERVER_TIMING_HEADER]: 'true', + }, } as {} as Instance; const NAME = 'table-name'; diff --git a/handwritten/spanner/test/instance.ts b/handwritten/spanner/test/instance.ts index 7f9be090c1b1..46666908d006 100644 --- a/handwritten/spanner/test/instance.ts +++ b/handwritten/spanner/test/instance.ts @@ -80,6 +80,9 @@ describe('Instance', () => { projectId: 'project-id', instances_: new Map(), projectFormattedName_: 'projects/project-id', + commonHeaders_: { + [AFE_SERVER_TIMING_HEADER]: 'true', + }, } as {} as Spanner; const NAME = 'instance-name'; diff --git a/handwritten/spanner/test/session.ts b/handwritten/spanner/test/session.ts index ef7d78c82142..f02eb34e39c3 100644 --- a/handwritten/spanner/test/session.ts +++ b/handwritten/spanner/test/session.ts @@ -87,6 +87,10 @@ describe('Session', () => { request: () => {}, formattedName_: 'formatted-database-name', parent: INSTANCE, + commonHeaders_: { + [CLOUD_RESOURCE_HEADER]: 'formatted-database-name', + [AFE_SERVER_TIMING_HEADER]: 'true', + }, }; const NAME = 'session-name'; diff --git a/handwritten/spanner/test/transaction.ts b/handwritten/spanner/test/transaction.ts index 4c7f4aae217e..45b1d24a840d 100644 --- a/handwritten/spanner/test/transaction.ts +++ b/handwritten/spanner/test/transaction.ts @@ -74,6 +74,10 @@ describe('Transaction', () => { formattedName_: SESSION_NAME, request: REQUEST, requestStream: REQUEST_STREAM, + commonHeaders_: { + [CLOUD_RESOURCE_HEADER]: 'formatted-database-name', + [AFE_SERVER_TIMING_HEADER]: 'true', + }, }; const PARTIAL_RESULT_STREAM = sandbox.stub();