Skip to content

fix(bigtable): disable dynamic channel pool by default and raise default pool size to 10#19945

Merged
sushanb merged 2 commits into
mainfrom
fix/bigtable-disable-dynamic-pool-default
Jun 10, 2026
Merged

fix(bigtable): disable dynamic channel pool by default and raise default pool size to 10#19945
sushanb merged 2 commits into
mainfrom
fix/bigtable-disable-dynamic-pool-default

Conversation

@sushanb

@sushanb sushanb commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Disable dynamic channel pool scaling by default (DefaultDynamicChannelPoolConfig().Enabled flipped from true to false).
  • Raise the default gRPC connection pool size from 4 to 10 to align with defaultBigtableConnPoolSize and compensate for the loss of dynamic scale-up.

Why

Mitigates steady heap growth caused by the upstream gRPC-Go xDS client memory leak in DirectPath-xDS connections. Scale events churn connections often enough to expose that leak, and the prior pool default of 4 amplified the problem under load. See #14582.

Pairs with the connection-recycler MaxAge bump (7d) in a sibling PR — both reduce DirectPath-xDS connection churn while the upstream fix lands.

Compatibility

  • ClientConfig.DisableDynamicChannelPool keeps its existing semantics; users who already opt out are unaffected.
  • Callers who want dynamic scaling can construct a DynamicChannelPoolConfig with Enabled: true.

Test plan

  • go build ./... clean
  • go vet ./... clean
  • go test ./internal/transport/... ./internal/option/... ./ (targeted: TestDynamic/TestValidate/TestConnPool/TestNewClient) — pass
  • CI green

…ult pool size to 10

Disable dynamic channel pool scaling by default and bump the default gRPC
connection pool size from 4 to 10. These mitigate steady heap growth caused
by the upstream gRPC-Go xDS client memory leak: scale events churn
DirectPath-xDS connections often enough to expose the leak, and the prior
default of 4 connections amplified the problem under load.

The dynamic pool can still be opted into by constructing a
DynamicChannelPoolConfig with Enabled: true. ClientConfig.DisableDynamicChannelPool
keeps its existing semantics so users who already opt out are unaffected.

See #14582.
@sushanb sushanb requested review from a team as code owners June 10, 2026 06:33
@product-auto-label product-auto-label Bot added the api: bigtable Issues related to the Bigtable API. label Jun 10, 2026
@sushanb sushanb requested a review from bhshkh June 10, 2026 06:33

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request disables dynamic channel pool scaling by default to mitigate a memory leak issue in the upstream gRPC-Go xDS client. To compensate, the default GRPC connection pool size in the client is increased from 4 to 10. A review comment suggests using the defaultBigtableConnPoolSize constant instead of hardcoding the value 10 to maintain consistency and avoid duplication.

Comment thread bigtable/client.go Outdated
@sushanb sushanb requested a review from nimf June 10, 2026 06:33
…RPC pool size

Use the existing defaultBigtableConnPoolSize constant instead of hardcoding 10,
to avoid duplication and keep the default in one place.
@sushanb sushanb merged commit 5ddf8d4 into main Jun 10, 2026
19 checks passed
@sushanb sushanb deleted the fix/bigtable-disable-dynamic-pool-default branch June 10, 2026 19:00
bhshkh added a commit that referenced this pull request Jun 10, 2026
PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

Librarian Version: v0.20.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-go@sha256:b7e38e80d677dc6b7266896bb99a33fa62348d3e39d7b8f2f6423e7dc4b35a60
<details><summary>bigtable: v1.49.0</summary>

##
[v1.49.0](bigtable/v1.48.0...bigtable/v1.49.0)
(2026-06-10)

### Features

* enable new auth library and remove async refresh (#19943)
([0d3697b](0d3697b2))

* add traffic diverter and table shim for bigtable (#14633)
([2f3c918](2f3c9184))

* add virtual RPC descriptors (#14648)
([5eedda1](5eedda18))

* add opensession descriptors for bigtable (#14647)
([8968f4f](8968f4fd))

* update API sources and regenerate (#14701)
([a9b7921](a9b79215))

### Bug Fixes

* retry unexpected EOF errors (#13157)
([2b4ac42](2b4ac429))

* disable dynamic channel pool by default and raise default pool size to
10 (#19945)
([5ddf8d4](5ddf8d46))

* raise default connection-recycler MaxAge to 7 days (#19940)
([a7959ef](a7959efc))

</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: bigtable Issues related to the Bigtable API.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants