From fb97e05fb0770dc98385c4ed5abbf19384d1da04 Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Mon, 13 Apr 2026 17:00:10 -0400 Subject: [PATCH 1/3] test: add support for channel configurators to session client Change-Id: Iff9040f0ed03754f2424ffafb143752f69e0d8a6 --- .../v2/internal/compat/GaxBasicChannelProvider.java | 5 +++++ .../compat/GaxDirectAccessChannelProvider.java | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java index 26d7857aafa8..77ae2c9d3594 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java @@ -15,6 +15,7 @@ */ package com.google.cloud.bigtable.data.v2.internal.compat; +import com.google.api.core.ApiFunction; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.auth.Credentials; import com.google.bigtable.v2.FeatureFlags; @@ -32,11 +33,14 @@ import javax.annotation.Nullable; public class GaxBasicChannelProvider implements ChannelProvider { + private final ApiFunction channelConfigurator; private final InstantiatingGrpcChannelProvider inner; private final @Nullable CallCredentials credentials; + @SuppressWarnings("rawtypes") public GaxBasicChannelProvider( InstantiatingGrpcChannelProvider inner, @Nullable Credentials credentials) { + this.channelConfigurator = inner.toBuilder().getChannelConfigurator(); this.inner = inner.toBuilder().setAttemptDirectPath(false).build(); this.credentials = Optional.ofNullable(credentials).map(MoreCallCredentials::from).orElse(null); } @@ -56,6 +60,7 @@ public ManagedChannelBuilder newChannelBuilder() { if (credentials != null) { builder.intercept(new CredInterceptor(credentials)); } + builder = channelConfigurator.apply(builder); return builder; } catch (IOException e) { throw new RuntimeException("Gax channel provider failed to provide a channel builder", e); diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxDirectAccessChannelProvider.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxDirectAccessChannelProvider.java index bfc4dfd7bfd2..b562c6922330 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxDirectAccessChannelProvider.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxDirectAccessChannelProvider.java @@ -15,6 +15,7 @@ */ package com.google.cloud.bigtable.data.v2.internal.compat; +import com.google.api.core.ApiFunction; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.auth.Credentials; import com.google.bigtable.v2.FeatureFlags; @@ -26,6 +27,10 @@ public class GaxDirectAccessChannelProvider implements ChannelProvider { private final InstantiatingGrpcChannelProvider inner; + + @SuppressWarnings("rawtypes") + private final ApiFunction channelConfigurator; + private final Optional fallback; public static ChannelProvider create( @@ -67,6 +72,9 @@ private GaxDirectAccessChannelProvider( @SuppressWarnings("unused") @Nullable Credentials credentials, Optional fallback) { this.inner = directAccessProvider; + this.channelConfigurator = + Optional.ofNullable(directAccessProvider.toBuilder().getChannelConfigurator()) + .orElse(b -> b); this.fallback = fallback; } @@ -81,7 +89,7 @@ public FeatureFlags updateFeatureFlags(FeatureFlags featureFlags) { @Override public ManagedChannelBuilder newChannelBuilder() { try { - return inner.createChannelBuilder(); + return channelConfigurator.apply(inner.createChannelBuilder()); } catch (IOException e) { throw new RuntimeException("Gax channel provider failed to provide a channel builder", e); } From 99f823084bca83b5691ee8832a059f129027d71d Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Mon, 13 Apr 2026 17:04:42 -0400 Subject: [PATCH 2/3] fix npe Change-Id: I5d43f5683fa33d34a7192ad36c8efdf87d01f0c2 --- .../data/v2/internal/compat/GaxBasicChannelProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java index 77ae2c9d3594..ce4cc7d1aac4 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java @@ -40,7 +40,8 @@ public class GaxBasicChannelProvider implements ChannelProvider { @SuppressWarnings("rawtypes") public GaxBasicChannelProvider( InstantiatingGrpcChannelProvider inner, @Nullable Credentials credentials) { - this.channelConfigurator = inner.toBuilder().getChannelConfigurator(); + this.channelConfigurator = Optional.ofNullable(inner.toBuilder().getChannelConfigurator()) + .orElse(b -> b); this.inner = inner.toBuilder().setAttemptDirectPath(false).build(); this.credentials = Optional.ofNullable(credentials).map(MoreCallCredentials::from).orElse(null); } From 20f539c5d3759cb5bde1bc0bd78bddbcd3d5a762 Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Mon, 13 Apr 2026 17:09:27 -0400 Subject: [PATCH 3/3] fmt Change-Id: I355771f3e72dd686d5f5c59543b8f694b2152874 --- .../data/v2/internal/compat/GaxBasicChannelProvider.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java index ce4cc7d1aac4..90f843cb39b2 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat/GaxBasicChannelProvider.java @@ -40,8 +40,8 @@ public class GaxBasicChannelProvider implements ChannelProvider { @SuppressWarnings("rawtypes") public GaxBasicChannelProvider( InstantiatingGrpcChannelProvider inner, @Nullable Credentials credentials) { - this.channelConfigurator = Optional.ofNullable(inner.toBuilder().getChannelConfigurator()) - .orElse(b -> b); + this.channelConfigurator = + Optional.ofNullable(inner.toBuilder().getChannelConfigurator()).orElse(b -> b); this.inner = inner.toBuilder().setAttemptDirectPath(false).build(); this.credentials = Optional.ofNullable(credentials).map(MoreCallCredentials::from).orElse(null); }