Skip to content
This repository was archived by the owner on Apr 7, 2026. It is now read-only.

Commit 7debc6d

Browse files
release-please[bot]rahul2393
authored andcommitted
chore: preserve default TLS authority for bypass-routed channels
1 parent 7a42211 commit 7debc6d

File tree

19 files changed

+110
-55
lines changed

19 files changed

+110
-55
lines changed

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
# Changelog
22

3+
## [6.113.0](https://github.com/googleapis/java-spanner/compare/v6.112.0...v6.113.0) (2026-03-25)
4+
5+
6+
### Features
7+
8+
* Switch Eef metrics to using built in open telemetry ([#4385](https://github.com/googleapis/java-spanner/issues/4385)) ([0d0ad41](https://github.com/googleapis/java-spanner/commit/0d0ad4194dbfe46c505abcd237c93cbd39197331))
9+
10+
11+
### Bug Fixes
12+
13+
* **deps:** Update the Java code generator (gapic-generator-java) to 2.68.0 ([bb63e92](https://github.com/googleapis/java-spanner/commit/bb63e929e96ee54e849e6295c074d4f4586c99f3))
14+
15+
16+
### Dependencies
17+
18+
* Update dependency com.google.cloud:sdk-platform-java-config to v3.58.0 ([#4390](https://github.com/googleapis/java-spanner/issues/4390)) ([7f35761](https://github.com/googleapis/java-spanner/commit/7f357615c24ebb313043eabeae397f689866ad50))
19+
* Update googleapis/sdk-platform-java action to v2.68.0 ([#4389](https://github.com/googleapis/java-spanner/issues/4389)) ([737dfac](https://github.com/googleapis/java-spanner/commit/737dfac5972c921c8fd50a1e3c7c11652f67874d))
20+
321
## [6.112.0](https://github.com/googleapis/java-spanner/compare/v6.111.1...v6.112.0) (2026-03-17)
422

523

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ implementation 'com.google.cloud:google-cloud-spanner'
5656
If you are using Gradle without BOM, add this to your dependencies:
5757

5858
```Groovy
59-
implementation 'com.google.cloud:google-cloud-spanner:6.112.0'
59+
implementation 'com.google.cloud:google-cloud-spanner:6.113.0'
6060
```
6161

6262
If you are using SBT, add this to your dependencies:
6363

6464
```Scala
65-
libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.112.0"
65+
libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.113.0"
6666
```
6767

6868
## Authentication
@@ -549,7 +549,7 @@ Java is a registered trademark of Oracle and/or its affiliates.
549549
[javadocs]: https://cloud.google.com/java/docs/reference/google-cloud-spanner/latest/history
550550
[stability-image]: https://img.shields.io/badge/stability-stable-green
551551
[maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-spanner.svg
552-
[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.112.0
552+
[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.113.0
553553
[authentication]: https://github.com/googleapis/google-cloud-java#authentication
554554
[auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes
555555
[predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles

benchmarks/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<parent>
2525
<groupId>com.google.cloud</groupId>
2626
<artifactId>google-cloud-spanner-parent</artifactId>
27-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
27+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
2828
</parent>
2929

3030
<properties>

google-cloud-spanner-bom/pom.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-spanner-bom</artifactId>
6-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
77
<packaging>pom</packaging>
88
<parent>
99
<groupId>com.google.cloud</groupId>
@@ -53,43 +53,43 @@
5353
<dependency>
5454
<groupId>com.google.cloud</groupId>
5555
<artifactId>google-cloud-spanner</artifactId>
56-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
56+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
5757
</dependency>
5858
<dependency>
5959
<groupId>com.google.cloud</groupId>
6060
<artifactId>google-cloud-spanner</artifactId>
6161
<type>test-jar</type>
62-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
62+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6363
</dependency>
6464
<dependency>
6565
<groupId>com.google.api.grpc</groupId>
6666
<artifactId>grpc-google-cloud-spanner-v1</artifactId>
67-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
67+
<version>6.113.0</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
6868
</dependency>
6969
<dependency>
7070
<groupId>com.google.api.grpc</groupId>
7171
<artifactId>grpc-google-cloud-spanner-admin-instance-v1</artifactId>
72-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
72+
<version>6.113.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
7373
</dependency>
7474
<dependency>
7575
<groupId>com.google.api.grpc</groupId>
7676
<artifactId>grpc-google-cloud-spanner-admin-database-v1</artifactId>
77-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
77+
<version>6.113.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
7878
</dependency>
7979
<dependency>
8080
<groupId>com.google.api.grpc</groupId>
8181
<artifactId>proto-google-cloud-spanner-admin-instance-v1</artifactId>
82-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
82+
<version>6.113.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
8383
</dependency>
8484
<dependency>
8585
<groupId>com.google.api.grpc</groupId>
8686
<artifactId>proto-google-cloud-spanner-v1</artifactId>
87-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
87+
<version>6.113.0</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
8888
</dependency>
8989
<dependency>
9090
<groupId>com.google.api.grpc</groupId>
9191
<artifactId>proto-google-cloud-spanner-admin-database-v1</artifactId>
92-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
92+
<version>6.113.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
9393
</dependency>
9494
</dependencies>
9595
</dependencyManagement>

google-cloud-spanner-executor/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>com.google.cloud</groupId>
77
<artifactId>google-cloud-spanner-executor</artifactId>
8-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
8+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
99
<packaging>jar</packaging>
1010
<name>Google Cloud Spanner Executor</name>
1111

1212
<parent>
1313
<groupId>com.google.cloud</groupId>
1414
<artifactId>google-cloud-spanner-parent</artifactId>
15-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
15+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
1616
</parent>
1717

1818
<properties>

google-cloud-spanner/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-spanner</artifactId>
6-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
77
<packaging>jar</packaging>
88
<name>Google Cloud Spanner</name>
99
<url>https://github.com/googleapis/java-spanner</url>
1010
<description>Java idiomatic client for Google Cloud Spanner.</description>
1111
<parent>
1212
<groupId>com.google.cloud</groupId>
1313
<artifactId>google-cloud-spanner-parent</artifactId>
14-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
14+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
1515
</parent>
1616
<properties>
1717
<site.installationModule>google-cloud-spanner</site.installationModule>

google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GrpcChannelEndpointCache.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,19 @@
1717
package com.google.cloud.spanner.spi.v1;
1818

1919
import com.google.api.core.InternalApi;
20+
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.Builder;
2021
import com.google.api.gax.grpc.GrpcTransportChannel;
2122
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
2223
import com.google.api.gax.rpc.TransportChannelProvider;
2324
import com.google.cloud.spanner.ErrorCode;
2425
import com.google.cloud.spanner.SpannerExceptionFactory;
2526
import com.google.common.annotations.VisibleForTesting;
27+
import io.grpc.ManagedChannelBuilder;
2628
import io.grpc.ConnectivityState;
2729
import io.grpc.ManagedChannel;
2830
import java.io.IOException;
2931
import java.util.Map;
32+
import java.util.Objects;
3033
import java.util.concurrent.ConcurrentHashMap;
3134
import java.util.concurrent.TimeUnit;
3235
import java.util.concurrent.atomic.AtomicBoolean;
@@ -47,6 +50,7 @@ class GrpcChannelEndpointCache implements ChannelEndpointCache {
4750
private final InstantiatingGrpcChannelProvider baseProvider;
4851
private final Map<String, GrpcChannelEndpoint> servers = new ConcurrentHashMap<>();
4952
private final GrpcChannelEndpoint defaultEndpoint;
53+
private final String defaultAuthority;
5054
private final AtomicBoolean isShutdown = new AtomicBoolean(false);
5155

5256
/**
@@ -61,6 +65,7 @@ public GrpcChannelEndpointCache(InstantiatingGrpcChannelProvider channelProvider
6165
this.baseProvider = channelProvider;
6266
String defaultEndpoint = channelProvider.getEndpoint();
6367
this.defaultEndpoint = new GrpcChannelEndpoint(defaultEndpoint, channelProvider);
68+
this.defaultAuthority = this.defaultEndpoint.getChannel().authority();
6469
this.servers.put(defaultEndpoint, this.defaultEndpoint);
6570
}
6671

@@ -82,7 +87,7 @@ public ChannelEndpoint get(String address) {
8287
try {
8388
// Create a new provider with the same config but different endpoint.
8489
// This is thread-safe as withEndpoint() returns a new provider instance.
85-
TransportChannelProvider newProvider = baseProvider.withEndpoint(addr);
90+
TransportChannelProvider newProvider = createProviderWithAuthorityOverride(addr);
8691
return new GrpcChannelEndpoint(addr, newProvider);
8792
} catch (IOException e) {
8893
throw SpannerExceptionFactory.newSpannerException(
@@ -91,6 +96,26 @@ public ChannelEndpoint get(String address) {
9196
});
9297
}
9398

99+
private TransportChannelProvider createProviderWithAuthorityOverride(String address) {
100+
InstantiatingGrpcChannelProvider endpointProvider =
101+
(InstantiatingGrpcChannelProvider) baseProvider.withEndpoint(address);
102+
if (Objects.equals(defaultAuthority, address)) {
103+
return endpointProvider;
104+
}
105+
Builder builder = endpointProvider.toBuilder();
106+
final com.google.api.core.ApiFunction<ManagedChannelBuilder, ManagedChannelBuilder>
107+
baseConfigurator = builder.getChannelConfigurator();
108+
builder.setChannelConfigurator(
109+
channelBuilder -> {
110+
ManagedChannelBuilder effectiveBuilder = channelBuilder;
111+
if (baseConfigurator != null) {
112+
effectiveBuilder = baseConfigurator.apply(effectiveBuilder);
113+
}
114+
return effectiveBuilder.overrideAuthority(defaultAuthority);
115+
});
116+
return builder.build();
117+
}
118+
94119
@Override
95120
public void evict(String address) {
96121
if (defaultEndpoint.getAddress().equals(address)) {

google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GrpcChannelEndpointCacheTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,18 @@ public void getCachesPerAddress() throws Exception {
6060
}
6161
}
6262

63+
@Test
64+
public void routedChannelsReuseDefaultAuthority() throws Exception {
65+
GrpcChannelEndpointCache cache = new GrpcChannelEndpointCache(createProvider("localhost:1234"));
66+
try {
67+
ChannelEndpoint routed = cache.get("localhost:1111");
68+
69+
assertThat(routed.getChannel().authority()).isEqualTo("localhost:1234");
70+
} finally {
71+
cache.shutdown();
72+
}
73+
}
74+
6375
@Test
6476
public void evictRemovesNonDefaultServer() throws Exception {
6577
GrpcChannelEndpointCache cache = new GrpcChannelEndpointCache(createProvider("localhost:1234"));

grpc-google-cloud-spanner-admin-database-v1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.google.api.grpc</groupId>
66
<artifactId>grpc-google-cloud-spanner-admin-database-v1</artifactId>
7-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
7+
<version>6.113.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
88
<name>grpc-google-cloud-spanner-admin-database-v1</name>
99
<description>GRPC library for grpc-google-cloud-spanner-admin-database-v1</description>
1010
<parent>
1111
<groupId>com.google.cloud</groupId>
1212
<artifactId>google-cloud-spanner-parent</artifactId>
13-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

grpc-google-cloud-spanner-admin-instance-v1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.google.api.grpc</groupId>
66
<artifactId>grpc-google-cloud-spanner-admin-instance-v1</artifactId>
7-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
7+
<version>6.113.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
88
<name>grpc-google-cloud-spanner-admin-instance-v1</name>
99
<description>GRPC library for grpc-google-cloud-spanner-admin-instance-v1</description>
1010
<parent>
1111
<groupId>com.google.cloud</groupId>
1212
<artifactId>google-cloud-spanner-parent</artifactId>
13-
<version>6.112.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.113.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

0 commit comments

Comments
 (0)