From 087575b295c4fff5a51e30c3d8ab1bfef6cbacc4 Mon Sep 17 00:00:00 2001 From: hanshu-g Date: Wed, 14 Jan 2026 14:54:02 -0500 Subject: [PATCH 1/8] modified: google/cloud/bigtable/internal/bigtable_stub_factory.cc modified: google/cloud/bigtable/internal/defaults.cc --- .../internal/bigtable_stub_factory.cc | 43 ++++++++++++++----- google/cloud/bigtable/internal/defaults.cc | 7 ++- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/google/cloud/bigtable/internal/bigtable_stub_factory.cc b/google/cloud/bigtable/internal/bigtable_stub_factory.cc index 9d5add4a61c44..9e5904c494455 100644 --- a/google/cloud/bigtable/internal/bigtable_stub_factory.cc +++ b/google/cloud/bigtable/internal/bigtable_stub_factory.cc @@ -26,6 +26,7 @@ #include "google/cloud/internal/algorithm.h" #include "google/cloud/internal/api_client_header.h" #include "google/cloud/internal/base64_transforms.h" +#include "google/cloud/internal/getenv.h" #include "google/cloud/internal/opentelemetry.h" #include "google/cloud/internal/unified_grpc_credentials.h" #include "google/cloud/log.h" @@ -47,17 +48,37 @@ std::shared_ptr CreateGrpcChannel( } std::string FeaturesMetadata() { - static auto const* const kFeatures = new auto([] { - google::bigtable::v2::FeatureFlags proto; - proto.set_reverse_scans(true); - proto.set_last_scanned_row_responses(true); - proto.set_mutate_rows_rate_limit(true); - proto.set_mutate_rows_rate_limit2(true); - proto.set_routing_cookie(true); - proto.set_retry_info(true); - return internal::UrlsafeBase64Encode(proto.SerializeAsString()); - }()); - return *kFeatures; + auto const env = google::cloud::internal::GetEnv("CBT_ENABLE_DIRECTPATH"); + bool const directpath_enabled = + env.has_value() && (*env == "true" || *env == "1"); + if (directpath_enabled) { + static auto const* const kFeaturesDirectPath = new auto([] { + google::bigtable::v2::FeatureFlags proto; + proto.set_reverse_scans(true); + proto.set_last_scanned_row_responses(true); + proto.set_mutate_rows_rate_limit(true); + proto.set_mutate_rows_rate_limit2(true); + proto.set_routing_cookie(true); + proto.set_retry_info(true); + // Flags for Directpath + proto.set_traffic_director_enabled(true); + proto.set_direct_access_requested(true); + return internal::UrlsafeBase64Encode(proto.SerializeAsString()); + }()); + return *kFeaturesDirectPath; + } else { + static auto const* const kFeaturesDefault = new auto([] { + google::bigtable::v2::FeatureFlags proto; + proto.set_reverse_scans(true); + proto.set_last_scanned_row_responses(true); + proto.set_mutate_rows_rate_limit(true); + proto.set_mutate_rows_rate_limit2(true); + proto.set_routing_cookie(true); + proto.set_retry_info(true); + return internal::UrlsafeBase64Encode(proto.SerializeAsString()); + }()); + return *kFeaturesDefault; + } } } // namespace diff --git a/google/cloud/bigtable/internal/defaults.cc b/google/cloud/bigtable/internal/defaults.cc index c7c1cd041ea86..fa97a85d34f74 100644 --- a/google/cloud/bigtable/internal/defaults.cc +++ b/google/cloud/bigtable/internal/defaults.cc @@ -175,7 +175,12 @@ Options DefaultOptions(Options opts) { // When using DirectPath the gRPC library already does load balancing across // multiple sockets, it makes little sense to perform additional load // balancing in the client library. - if (!opts.has()) opts.set(1); + } + + auto const enable_directpath_env = google::cloud::internal::GetEnv("CBT_ENABLE_DIRECTPATH"); + if (enable_directpath_env.has_value() && + (*enable_directpath_env == "true" || *enable_directpath_env == "1")) { + opts.set("c2p://bigtable.googleapis.com"); } auto emulator = GetEnv("BIGTABLE_EMULATOR_HOST"); From 981f2d5dd2783b81469d347d1e1c96a8ef18cb6a Mon Sep 17 00:00:00 2001 From: hanshu-g Date: Wed, 14 Jan 2026 15:30:02 -0500 Subject: [PATCH 2/8] modified: google/cloud/bigtable/internal/defaults.cc --- google/cloud/bigtable/internal/defaults.cc | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/google/cloud/bigtable/internal/defaults.cc b/google/cloud/bigtable/internal/defaults.cc index fa97a85d34f74..8d24eb0048297 100644 --- a/google/cloud/bigtable/internal/defaults.cc +++ b/google/cloud/bigtable/internal/defaults.cc @@ -176,12 +176,6 @@ Options DefaultOptions(Options opts) { // multiple sockets, it makes little sense to perform additional load // balancing in the client library. } - - auto const enable_directpath_env = google::cloud::internal::GetEnv("CBT_ENABLE_DIRECTPATH"); - if (enable_directpath_env.has_value() && - (*enable_directpath_env == "true" || *enable_directpath_env == "1")) { - opts.set("c2p://bigtable.googleapis.com"); - } auto emulator = GetEnv("BIGTABLE_EMULATOR_HOST"); if (emulator) { @@ -250,6 +244,11 @@ Options DefaultDataOptions(Options opts) { if (tracing && !tracing->empty()) { opts.set(true); } + auto const enable_directpath_env = GetEnv("CBT_ENABLE_DIRECTPATH"); + if (enable_directpath_env.has_value() && + (*enable_directpath_env == "true" || *enable_directpath_env == "1")) { + opts.set("c2p://bigtable.googleapis.com"); + } if (!opts.has()) { opts.set( bigtable::DataLimitedTimeRetryPolicy( From f59b3c16f70d7d7590bcc631d033e03a55c47a67 Mon Sep 17 00:00:00 2001 From: hanshu-g Date: Wed, 14 Jan 2026 16:35:31 -0500 Subject: [PATCH 3/8] modified: google/cloud/bigtable/internal/bigtable_stub_factory.cc modified: google/cloud/bigtable/internal/defaults.cc modified: google/cloud/bigtable/internal/defaults_test.cc --- .../bigtable/internal/bigtable_stub_factory.cc | 1 - google/cloud/bigtable/internal/defaults.cc | 15 ++++----------- google/cloud/bigtable/internal/defaults_test.cc | 17 +++++++---------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/google/cloud/bigtable/internal/bigtable_stub_factory.cc b/google/cloud/bigtable/internal/bigtable_stub_factory.cc index 9e5904c494455..10673fffd7b5c 100644 --- a/google/cloud/bigtable/internal/bigtable_stub_factory.cc +++ b/google/cloud/bigtable/internal/bigtable_stub_factory.cc @@ -60,7 +60,6 @@ std::string FeaturesMetadata() { proto.set_mutate_rows_rate_limit2(true); proto.set_routing_cookie(true); proto.set_retry_info(true); - // Flags for Directpath proto.set_traffic_director_enabled(true); proto.set_direct_access_requested(true); return internal::UrlsafeBase64Encode(proto.SerializeAsString()); diff --git a/google/cloud/bigtable/internal/defaults.cc b/google/cloud/bigtable/internal/defaults.cc index 8d24eb0048297..152ab9162c641 100644 --- a/google/cloud/bigtable/internal/defaults.cc +++ b/google/cloud/bigtable/internal/defaults.cc @@ -164,12 +164,10 @@ Options DefaultOptions(Options opts) { } } - auto const direct_path = - GetEnv("GOOGLE_CLOUD_ENABLE_DIRECT_PATH").value_or(""); - if (absl::c_any_of(absl::StrSplit(direct_path, ','), - [](absl::string_view v) { return v == "bigtable"; })) { - opts.set( - "google-c2p:///directpath-bigtable.googleapis.com") + auto const direct_path = GetEnv("CBT_ENABLE_DIRECTPATH"); + if (direct_path.has_value() && + (*direct_path == "true" || *direct_path == "1")) { + opts.set("c2p://bigtable.googleapis.com") .set("directpath-bigtable.googleapis.com"); // When using DirectPath the gRPC library already does load balancing across @@ -244,11 +242,6 @@ Options DefaultDataOptions(Options opts) { if (tracing && !tracing->empty()) { opts.set(true); } - auto const enable_directpath_env = GetEnv("CBT_ENABLE_DIRECTPATH"); - if (enable_directpath_env.has_value() && - (*enable_directpath_env == "true" || *enable_directpath_env == "1")) { - opts.set("c2p://bigtable.googleapis.com"); - } if (!opts.has()) { opts.set( bigtable::DataLimitedTimeRetryPolicy( diff --git a/google/cloud/bigtable/internal/defaults_test.cc b/google/cloud/bigtable/internal/defaults_test.cc index 19f666a323504..0f03dd27a108d 100644 --- a/google/cloud/bigtable/internal/defaults_test.cc +++ b/google/cloud/bigtable/internal/defaults_test.cc @@ -426,12 +426,10 @@ TEST(EndpointEnvTest, UserCredentialsOverrideEmulatorEnv) { TEST(EndpointEnvTest, DirectPathEnabled) { ScopedEnvironment emulator("BIGTABLE_EMULATOR_HOST", absl::nullopt); - ScopedEnvironment direct_path("GOOGLE_CLOUD_ENABLE_DIRECT_PATH", - "storage,bigtable"); + ScopedEnvironment direct_path("CBT_ENABLE_DIRECTPATH", "true"); auto opts = DefaultOptions(); - EXPECT_EQ("google-c2p:///directpath-bigtable.googleapis.com", - opts.get()); + EXPECT_EQ("c2p://bigtable.googleapis.com", opts.get()); EXPECT_EQ("directpath-bigtable.googleapis.com", opts.get()); // Admin endpoints are not affected. EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); @@ -440,10 +438,9 @@ TEST(EndpointEnvTest, DirectPathEnabled) { EXPECT_EQ(1, opts.get()); } -TEST(EndpointEnvTest, DirectPathNoMatch) { +TEST(EndpointEnvTest, DirectPathNotEnabled) { ScopedEnvironment emulator("BIGTABLE_EMULATOR_HOST", absl::nullopt); - ScopedEnvironment direct_path("GOOGLE_CLOUD_ENABLE_DIRECT_PATH", - "bigtable-not,almost-bigtable"); + ScopedEnvironment direct_path("CBT_ENABLE_DIRECTPATH", "false"); auto opts = DefaultDataOptions(Options{}); EXPECT_EQ("bigtable.googleapis.com", opts.get()); @@ -452,18 +449,18 @@ TEST(EndpointEnvTest, DirectPathNoMatch) { TEST(EndpointEnvTest, DirectPathOverridesUserEndpoints) { ScopedEnvironment emulator("BIGTABLE_EMULATOR_HOST", absl::nullopt); - ScopedEnvironment direct_path("GOOGLE_CLOUD_ENABLE_DIRECT_PATH", "bigtable"); + ScopedEnvironment direct_path("CBT_ENABLE_DIRECTPATH", "true"); auto opts = DefaultDataOptions( Options{}.set("ignored").set("ignored")); - EXPECT_EQ("google-c2p:///directpath-bigtable.googleapis.com", + EXPECT_EQ("c2p://bigtable.googleapis.com", opts.get()); EXPECT_EQ("directpath-bigtable.googleapis.com", opts.get()); } TEST(EndpointEnvTest, EmulatorOverridesDirectPath) { ScopedEnvironment emulator("BIGTABLE_EMULATOR_HOST", "emulator-host:8000"); - ScopedEnvironment direct_path("GOOGLE_CLOUD_ENABLE_DIRECT_PATH", "bigtable"); + ScopedEnvironment direct_path("CBT_ENABLE_DIRECTPATH", "true"); auto opts = DefaultDataOptions(Options{}); EXPECT_EQ("emulator-host:8000", opts.get()); From 03abd590e8aa8b940de473ae77ac1ff58cdcff62 Mon Sep 17 00:00:00 2001 From: hanshu-g Date: Wed, 14 Jan 2026 16:59:45 -0500 Subject: [PATCH 4/8] Changes to be committed: modified: google/cloud/bigtable/internal/defaults.cc modified: google/cloud/bigtable/internal/defaults_test.cc --- google/cloud/bigtable/internal/defaults.cc | 3 +-- google/cloud/bigtable/internal/defaults_test.cc | 7 +++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/google/cloud/bigtable/internal/defaults.cc b/google/cloud/bigtable/internal/defaults.cc index 152ab9162c641..9ad7a1238897a 100644 --- a/google/cloud/bigtable/internal/defaults.cc +++ b/google/cloud/bigtable/internal/defaults.cc @@ -167,8 +167,7 @@ Options DefaultOptions(Options opts) { auto const direct_path = GetEnv("CBT_ENABLE_DIRECTPATH"); if (direct_path.has_value() && (*direct_path == "true" || *direct_path == "1")) { - opts.set("c2p://bigtable.googleapis.com") - .set("directpath-bigtable.googleapis.com"); + opts.set("c2p://bigtable.googleapis.com"); // When using DirectPath the gRPC library already does load balancing across // multiple sockets, it makes little sense to perform additional load diff --git a/google/cloud/bigtable/internal/defaults_test.cc b/google/cloud/bigtable/internal/defaults_test.cc index 0f03dd27a108d..35b3de8aadfc5 100644 --- a/google/cloud/bigtable/internal/defaults_test.cc +++ b/google/cloud/bigtable/internal/defaults_test.cc @@ -430,7 +430,7 @@ TEST(EndpointEnvTest, DirectPathEnabled) { auto opts = DefaultOptions(); EXPECT_EQ("c2p://bigtable.googleapis.com", opts.get()); - EXPECT_EQ("directpath-bigtable.googleapis.com", opts.get()); + EXPECT_EQ("bigtable.googleapis.com", opts.get()); // Admin endpoints are not affected. EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); EXPECT_EQ("bigtableadmin.googleapis.com", @@ -453,9 +453,8 @@ TEST(EndpointEnvTest, DirectPathOverridesUserEndpoints) { auto opts = DefaultDataOptions( Options{}.set("ignored").set("ignored")); - EXPECT_EQ("c2p://bigtable.googleapis.com", - opts.get()); - EXPECT_EQ("directpath-bigtable.googleapis.com", opts.get()); + EXPECT_EQ("c2p://bigtable.googleapis.com", opts.get()); + EXPECT_EQ("bigtable.googleapis.com", opts.get()); } TEST(EndpointEnvTest, EmulatorOverridesDirectPath) { From d5be81e856b355608cd741ed09c3002607984d6b Mon Sep 17 00:00:00 2001 From: hanshu-g Date: Wed, 14 Jan 2026 17:24:05 -0500 Subject: [PATCH 5/8] modified: google/cloud/bigtable/internal/bigtable_stub_factory.cc modified: google/cloud/bigtable/internal/defaults.cc modified: google/cloud/bigtable/internal/defaults_test.cc --- .../internal/bigtable_stub_factory.cc | 36 ++++++------------- google/cloud/bigtable/internal/defaults.cc | 4 --- .../cloud/bigtable/internal/defaults_test.cc | 1 - 3 files changed, 11 insertions(+), 30 deletions(-) diff --git a/google/cloud/bigtable/internal/bigtable_stub_factory.cc b/google/cloud/bigtable/internal/bigtable_stub_factory.cc index 10673fffd7b5c..c6d08b0198612 100644 --- a/google/cloud/bigtable/internal/bigtable_stub_factory.cc +++ b/google/cloud/bigtable/internal/bigtable_stub_factory.cc @@ -48,36 +48,22 @@ std::shared_ptr CreateGrpcChannel( } std::string FeaturesMetadata() { + google::bigtable::v2::FeatureFlags proto; + proto.set_reverse_scans(true); + proto.set_last_scanned_row_responses(true); + proto.set_mutate_rows_rate_limit(true); + proto.set_mutate_rows_rate_limit2(true); + proto.set_routing_cookie(true); + proto.set_retry_info(true); + auto const env = google::cloud::internal::GetEnv("CBT_ENABLE_DIRECTPATH"); bool const directpath_enabled = env.has_value() && (*env == "true" || *env == "1"); if (directpath_enabled) { - static auto const* const kFeaturesDirectPath = new auto([] { - google::bigtable::v2::FeatureFlags proto; - proto.set_reverse_scans(true); - proto.set_last_scanned_row_responses(true); - proto.set_mutate_rows_rate_limit(true); - proto.set_mutate_rows_rate_limit2(true); - proto.set_routing_cookie(true); - proto.set_retry_info(true); - proto.set_traffic_director_enabled(true); - proto.set_direct_access_requested(true); - return internal::UrlsafeBase64Encode(proto.SerializeAsString()); - }()); - return *kFeaturesDirectPath; - } else { - static auto const* const kFeaturesDefault = new auto([] { - google::bigtable::v2::FeatureFlags proto; - proto.set_reverse_scans(true); - proto.set_last_scanned_row_responses(true); - proto.set_mutate_rows_rate_limit(true); - proto.set_mutate_rows_rate_limit2(true); - proto.set_routing_cookie(true); - proto.set_retry_info(true); - return internal::UrlsafeBase64Encode(proto.SerializeAsString()); - }()); - return *kFeaturesDefault; + proto.set_traffic_director_enabled(true); + proto.set_direct_access_requested(true); } + return internal::UrlsafeBase64Encode(proto.SerializeAsString()); } } // namespace diff --git a/google/cloud/bigtable/internal/defaults.cc b/google/cloud/bigtable/internal/defaults.cc index 9ad7a1238897a..fee5e5ce58e64 100644 --- a/google/cloud/bigtable/internal/defaults.cc +++ b/google/cloud/bigtable/internal/defaults.cc @@ -168,10 +168,6 @@ Options DefaultOptions(Options opts) { if (direct_path.has_value() && (*direct_path == "true" || *direct_path == "1")) { opts.set("c2p://bigtable.googleapis.com"); - - // When using DirectPath the gRPC library already does load balancing across - // multiple sockets, it makes little sense to perform additional load - // balancing in the client library. } auto emulator = GetEnv("BIGTABLE_EMULATOR_HOST"); diff --git a/google/cloud/bigtable/internal/defaults_test.cc b/google/cloud/bigtable/internal/defaults_test.cc index 35b3de8aadfc5..9c11979bf4001 100644 --- a/google/cloud/bigtable/internal/defaults_test.cc +++ b/google/cloud/bigtable/internal/defaults_test.cc @@ -435,7 +435,6 @@ TEST(EndpointEnvTest, DirectPathEnabled) { EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); - EXPECT_EQ(1, opts.get()); } TEST(EndpointEnvTest, DirectPathNotEnabled) { From 64ec2afa9ead30ac92a074c1b64ca5ede30f1ab1 Mon Sep 17 00:00:00 2001 From: hanshu-g Date: Thu, 15 Jan 2026 11:32:28 -0500 Subject: [PATCH 6/8] modified: google/cloud/bigtable/internal/defaults.cc --- google/cloud/bigtable/internal/defaults.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/google/cloud/bigtable/internal/defaults.cc b/google/cloud/bigtable/internal/defaults.cc index fee5e5ce58e64..5f4561192ef0c 100644 --- a/google/cloud/bigtable/internal/defaults.cc +++ b/google/cloud/bigtable/internal/defaults.cc @@ -167,7 +167,8 @@ Options DefaultOptions(Options opts) { auto const direct_path = GetEnv("CBT_ENABLE_DIRECTPATH"); if (direct_path.has_value() && (*direct_path == "true" || *direct_path == "1")) { - opts.set("c2p://bigtable.googleapis.com"); + opts.set("c2p://bigtable.googleapis.com") + .set("bigtable.googleapis.com"); } auto emulator = GetEnv("BIGTABLE_EMULATOR_HOST"); From 67e06e49dc6a85bd7c1189d27f9e4e0c5791bbc0 Mon Sep 17 00:00:00 2001 From: hanshu-g Date: Thu, 15 Jan 2026 17:51:37 -0500 Subject: [PATCH 7/8] modified: google/cloud/bigtable/internal/bigtable_stub_factory.cc modified: google/cloud/bigtable/internal/defaults.cc modified: google/cloud/bigtable/internal/defaults.h modified: google/cloud/bigtable/internal/defaults_test.cc --- .../bigtable/internal/bigtable_stub_factory.cc | 6 ++---- google/cloud/bigtable/internal/defaults.cc | 18 +++++++++++++----- google/cloud/bigtable/internal/defaults.h | 2 ++ .../cloud/bigtable/internal/defaults_test.cc | 8 ++++---- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/google/cloud/bigtable/internal/bigtable_stub_factory.cc b/google/cloud/bigtable/internal/bigtable_stub_factory.cc index c6d08b0198612..c17b750488411 100644 --- a/google/cloud/bigtable/internal/bigtable_stub_factory.cc +++ b/google/cloud/bigtable/internal/bigtable_stub_factory.cc @@ -19,6 +19,7 @@ #include "google/cloud/bigtable/internal/bigtable_metadata_decorator.h" #include "google/cloud/bigtable/internal/bigtable_round_robin_decorator.h" #include "google/cloud/bigtable/internal/bigtable_tracing_stub.h" +#include "google/cloud/bigtable/internal/defaults.h" #include "google/cloud/bigtable/internal/connection_refresh_state.h" #include "google/cloud/bigtable/options.h" #include "google/cloud/common_options.h" @@ -56,10 +57,7 @@ std::string FeaturesMetadata() { proto.set_routing_cookie(true); proto.set_retry_info(true); - auto const env = google::cloud::internal::GetEnv("CBT_ENABLE_DIRECTPATH"); - bool const directpath_enabled = - env.has_value() && (*env == "true" || *env == "1"); - if (directpath_enabled) { + if (bigtable::internal::EnableDirectAccess()) { proto.set_traffic_director_enabled(true); proto.set_direct_access_requested(true); } diff --git a/google/cloud/bigtable/internal/defaults.cc b/google/cloud/bigtable/internal/defaults.cc index 5f4561192ef0c..163d0d7339a8c 100644 --- a/google/cloud/bigtable/internal/defaults.cc +++ b/google/cloud/bigtable/internal/defaults.cc @@ -144,6 +144,12 @@ Options HandleUniverseDomain(Options opts) { return opts; } +bool EnableDirectAccess() { + absl::optional env_directpath = + google::cloud::internal::GetEnv("CBT_ENABLE_DIRECTPATH"); + return env_directpath.has_value() && env_directpath.value() == "true"; +} + Options DefaultOptions(Options opts) { using ::google::cloud::internal::GetEnv; auto ud = GetEnv("GOOGLE_CLOUD_UNIVERSE_DOMAIN"); @@ -164,11 +170,13 @@ Options DefaultOptions(Options opts) { } } - auto const direct_path = GetEnv("CBT_ENABLE_DIRECTPATH"); - if (direct_path.has_value() && - (*direct_path == "true" || *direct_path == "1")) { - opts.set("c2p://bigtable.googleapis.com") - .set("bigtable.googleapis.com"); + if (EnableDirectAccess()) { + std::string endpoint = opts.get(); + if (endpoint.empty()) { + endpoint = "bigtable.googleapis.com"; + } + opts.set("c2p:///" + endpoint) + .set(endpoint); } auto emulator = GetEnv("BIGTABLE_EMULATOR_HOST"); diff --git a/google/cloud/bigtable/internal/defaults.h b/google/cloud/bigtable/internal/defaults.h index 8b6a05719b40c..9c5e9102da24f 100644 --- a/google/cloud/bigtable/internal/defaults.h +++ b/google/cloud/bigtable/internal/defaults.h @@ -26,6 +26,8 @@ namespace internal { int DefaultConnectionPoolSize(); +bool EnableDirectAccess(); + /** * Returns an `Options` with the appropriate defaults for Bigtable. * diff --git a/google/cloud/bigtable/internal/defaults_test.cc b/google/cloud/bigtable/internal/defaults_test.cc index 9c11979bf4001..1978c84283e4e 100644 --- a/google/cloud/bigtable/internal/defaults_test.cc +++ b/google/cloud/bigtable/internal/defaults_test.cc @@ -429,7 +429,7 @@ TEST(EndpointEnvTest, DirectPathEnabled) { ScopedEnvironment direct_path("CBT_ENABLE_DIRECTPATH", "true"); auto opts = DefaultOptions(); - EXPECT_EQ("c2p://bigtable.googleapis.com", opts.get()); + EXPECT_EQ("c2p:///bigtable.googleapis.com", opts.get()); EXPECT_EQ("bigtable.googleapis.com", opts.get()); // Admin endpoints are not affected. EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); @@ -451,9 +451,9 @@ TEST(EndpointEnvTest, DirectPathOverridesUserEndpoints) { ScopedEnvironment direct_path("CBT_ENABLE_DIRECTPATH", "true"); auto opts = DefaultDataOptions( - Options{}.set("ignored").set("ignored")); - EXPECT_EQ("c2p://bigtable.googleapis.com", opts.get()); - EXPECT_EQ("bigtable.googleapis.com", opts.get()); + Options{}.set("userendpoint").set("userendpoint")); + EXPECT_EQ("c2p:///userendpoint", opts.get()); + EXPECT_EQ("userendpoint", opts.get()); } TEST(EndpointEnvTest, EmulatorOverridesDirectPath) { From 0044ce182258f115d0c9e77247e98f20baba977e Mon Sep 17 00:00:00 2001 From: hanshu-g Date: Thu, 15 Jan 2026 17:58:12 -0500 Subject: [PATCH 8/8] modified: google/cloud/bigtable/internal/bigtable_stub_factory.cc --- google/cloud/bigtable/internal/bigtable_stub_factory.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/cloud/bigtable/internal/bigtable_stub_factory.cc b/google/cloud/bigtable/internal/bigtable_stub_factory.cc index c17b750488411..0be9bdfd08f13 100644 --- a/google/cloud/bigtable/internal/bigtable_stub_factory.cc +++ b/google/cloud/bigtable/internal/bigtable_stub_factory.cc @@ -19,8 +19,8 @@ #include "google/cloud/bigtable/internal/bigtable_metadata_decorator.h" #include "google/cloud/bigtable/internal/bigtable_round_robin_decorator.h" #include "google/cloud/bigtable/internal/bigtable_tracing_stub.h" -#include "google/cloud/bigtable/internal/defaults.h" #include "google/cloud/bigtable/internal/connection_refresh_state.h" +#include "google/cloud/bigtable/internal/defaults.h" #include "google/cloud/bigtable/options.h" #include "google/cloud/common_options.h" #include "google/cloud/grpc_options.h"