From 293a07458ae4b037876d0c238aa9d2beef4d457f Mon Sep 17 00:00:00 2001 From: Akash DSouza Date: Tue, 5 May 2026 23:59:47 +0000 Subject: [PATCH] fix(spanner): preserve call options when applying statement timeout --- .../cloud/spanner/connection/AbstractBaseUnitOfWork.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractBaseUnitOfWork.java b/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractBaseUnitOfWork.java index 1d71e062cbb4..a92d696665d2 100644 --- a/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractBaseUnitOfWork.java +++ b/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractBaseUnitOfWork.java @@ -388,7 +388,11 @@ public ApiCallContext configure( if (remainingTimeout <= 0) { remainingTimeout = 1; } - return GrpcCallContext.createDefault() + // Build from the input context so existing call options + // (e.g. grpc-gcp's AFFINITY_KEY set by GapicSpannerRpc.newCallContext) + // survive the GrpcCallContext.merge() — merge rebuilds CallOptions from + // the configurator result, dropping any options it does not carry. + return ((GrpcCallContext) context) .withTimeoutDuration(Duration.ofNanos(remainingTimeout)); } return null;