Client
bigtable
Environment
Statically-linked binaries (go1.25.6 on amd64) running in GKE.
Code and Dependencies
We're using cloud.google.com/go/bigtable@v1.41.0.
If it's needed, I can see about producing something minimal to reproduce things in our GKE clusters.
Expected behavior
We expected memory use to be roughly unchanged by switching Direct Access on (CBT_ENABLE_DIRECTPATH: "true").
Actual behavior
Memory use increased substantially after switching Direct Access on (CBT_ENABLE_DIRECTPATH: "true") (with credit to @philpearl for noticing this).
The graph below shows one service's memory use. The step increase (~2026-01-07 1400 UTC) and decrease (~2026-02-02 1720 UTC) correspond to setting the environment variable and leaving it unset, respectively.
This kind of change affects all of the services that we have that use Bigtable. We've some sampling profiles that suggest that much of the issue is deep in some gRPC code around resolving clusters (e.g., google.golang.org/grpc/internal/xds/balancer/clusterresolver/clusterresolver.go); if more details are needed, we can look to provide them.
I would expect that this would be easy to reproduce.
Screenshots
Additional context
None—but we like Direct Access enough to leave it on, so thank you for introducing it!
Client
bigtable
Environment
Statically-linked binaries (go1.25.6 on amd64) running in GKE.
Code and Dependencies
We're using cloud.google.com/go/bigtable@v1.41.0.
If it's needed, I can see about producing something minimal to reproduce things in our GKE clusters.
Expected behavior
We expected memory use to be roughly unchanged by switching Direct Access on (CBT_ENABLE_DIRECTPATH: "true").
Actual behavior
Memory use increased substantially after switching Direct Access on (CBT_ENABLE_DIRECTPATH: "true") (with credit to @philpearl for noticing this).
The graph below shows one service's memory use. The step increase (~2026-01-07 1400 UTC) and decrease (~2026-02-02 1720 UTC) correspond to setting the environment variable and leaving it unset, respectively.
This kind of change affects all of the services that we have that use Bigtable. We've some sampling profiles that suggest that much of the issue is deep in some gRPC code around resolving clusters (e.g., google.golang.org/grpc/internal/xds/balancer/clusterresolver/clusterresolver.go); if more details are needed, we can look to provide them.
I would expect that this would be easy to reproduce.
Screenshots
Additional context
None—but we like Direct Access enough to leave it on, so thank you for introducing it!