Skip to content

feat(bigtable): Use connection factory to create connection and require connections to be primd. - #5

Open
sushanb wants to merge 138 commits into
client_startupfrom
prime_
Open

sushanb wants to merge 138 commits into
client_startupfrom
prime_

Conversation

@sushanb

@sushanb sushanb commented Jan 4, 2026

Copy link
Copy Markdown
Owner

No description provided.

sushanb and others added 6 commits December 29, 2025 18:27
…3520)

we will need this for populating direct_access/compatible as it has an
`ip_preference` metric field.
This PR does two things:
* fixes a typo in the README template used by librariangen
(internal/librariangen/configure/_README.md.txt)
* fixes the typo in the generated README files.
This PR addresses another bulk README typo (who's -> whose)
…13528)

PR created by the Librarian CLI to generate Cloud Client Libraries code
from protos.

BEGIN_COMMIT

BEGIN_NESTED_COMMIT
docs: change comment indicating `enable_gemini_in_bigquery` field for
BigQuery Reservation Assignments is deprecated


PiperOrigin-RevId: 850121797
Library-IDs: bigquery
Source-link:
[googleapis/googleapis@94ccedca](googleapis/googleapis@94ccedca)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
feat: expose BigtableProtoConfig for bigtable integration


PiperOrigin-RevId: 850096604
Library-IDs: bigquery/v2
Source-link:
[googleapis/googleapis@2c8fbf7f](googleapis/googleapis@2c8fbf7f)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
feat: add index ID to IndexPruningStats


PiperOrigin-RevId: 850096604
Library-IDs: bigquery/v2
Source-link:
[googleapis/googleapis@2c8fbf7f](googleapis/googleapis@2c8fbf7f)
END_NESTED_COMMIT

END_COMMIT

This pull request is generated with proto changes between

[googleapis/googleapis@535d161c](googleapis/googleapis@535d161)
(exclusive) and

[googleapis/googleapis@94ccedca](googleapis/googleapis@94ccedc)
(inclusive).

Librarian Version: v0.0.0-20251218164811-cd2252e38d0a
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-go@sha256:718167d5c23ed389b41f617b3a00ac839bdd938a6bd2d48ae0c2f1fa51ab1c3d
@sushanb
sushanb requested a review from nimf January 4, 2026 20:53
cpriti-os and others added 10 commits January 5, 2026 10:18
…googleapis#13519)

This PR enables librarian autogeneration for modules that are largely
mature and don't see ongoing handwritten investments.

The candidate modules affected with their last manual change dates,
based on a quick view of commit history and/or reviewing CHANGES.md

* errorreporting - Oct 2020
* logging - June 2024
* longrunning - Feb 2023
* profiler - Oct 2023
…migrationassessment (googleapis#13514)

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from
0.43.0 to 0.45.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/crypto/commit/4e0068c0098be10d7025c99ab7c50ce454c1f0f9"><code>4e0068c</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/crypto/commit/e79546e28b85ea53dd37afe1c4102746ef553b9c"><code>e79546e</code></a>
ssh: curb GSSAPI DoS risk by limiting number of specified OIDs</li>
<li><a
href="https://github.com/golang/crypto/commit/f91f7a7c31bf90b39c1de895ad116a2bacc88748"><code>f91f7a7</code></a>
ssh/agent: prevent panic on malformed constraint</li>
<li><a
href="https://github.com/golang/crypto/commit/2df4153a0311bdfea44376e0eb6ef2faefb0275b"><code>2df4153</code></a>
acme/autocert: let automatic renewal work with short lifetime certs</li>
<li><a
href="https://github.com/golang/crypto/commit/bcf6a849efcf4702fa5172cb0998b46c3da1e989"><code>bcf6a84</code></a>
acme: pass context to request</li>
<li><a
href="https://github.com/golang/crypto/commit/b4f2b62076abeee4e43fb59544dac565715fbf1e"><code>b4f2b62</code></a>
ssh: fix error message on unsupported cipher</li>
<li><a
href="https://github.com/golang/crypto/commit/79ec3a51fcc7fbd2691d56155d578225ccc542e2"><code>79ec3a5</code></a>
ssh: allow to bind to a hostname in remote forwarding</li>
<li><a
href="https://github.com/golang/crypto/commit/122a78f140d9d3303ed3261bc374bbbca149140f"><code>122a78f</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/crypto/commit/c0531f9c34514ad5c5551e2d6ce569ca673a8afd"><code>c0531f9</code></a>
all: eliminate vet diagnostics</li>
<li><a
href="https://github.com/golang/crypto/commit/0997000b45e3a40598272081bcad03ffd21b8adb"><code>0997000</code></a>
all: fix some comments</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/crypto/compare/v0.43.0...v0.45.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/crypto&package-manager=go_modules&previous-version=0.43.0&new-version=0.45.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/google-cloud-go/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…etermanager (googleapis#13509)

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from
0.43.0 to 0.45.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/crypto/commit/4e0068c0098be10d7025c99ab7c50ce454c1f0f9"><code>4e0068c</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/crypto/commit/e79546e28b85ea53dd37afe1c4102746ef553b9c"><code>e79546e</code></a>
ssh: curb GSSAPI DoS risk by limiting number of specified OIDs</li>
<li><a
href="https://github.com/golang/crypto/commit/f91f7a7c31bf90b39c1de895ad116a2bacc88748"><code>f91f7a7</code></a>
ssh/agent: prevent panic on malformed constraint</li>
<li><a
href="https://github.com/golang/crypto/commit/2df4153a0311bdfea44376e0eb6ef2faefb0275b"><code>2df4153</code></a>
acme/autocert: let automatic renewal work with short lifetime certs</li>
<li><a
href="https://github.com/golang/crypto/commit/bcf6a849efcf4702fa5172cb0998b46c3da1e989"><code>bcf6a84</code></a>
acme: pass context to request</li>
<li><a
href="https://github.com/golang/crypto/commit/b4f2b62076abeee4e43fb59544dac565715fbf1e"><code>b4f2b62</code></a>
ssh: fix error message on unsupported cipher</li>
<li><a
href="https://github.com/golang/crypto/commit/79ec3a51fcc7fbd2691d56155d578225ccc542e2"><code>79ec3a5</code></a>
ssh: allow to bind to a hostname in remote forwarding</li>
<li><a
href="https://github.com/golang/crypto/commit/122a78f140d9d3303ed3261bc374bbbca149140f"><code>122a78f</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/crypto/commit/c0531f9c34514ad5c5551e2d6ce569ca673a8afd"><code>c0531f9</code></a>
all: eliminate vet diagnostics</li>
<li><a
href="https://github.com/golang/crypto/commit/0997000b45e3a40598272081bcad03ffd21b8adb"><code>0997000</code></a>
all: fix some comments</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/crypto/compare/v0.43.0...v0.45.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/crypto&package-manager=go_modules&previous-version=0.43.0&new-version=0.45.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/google-cloud-go/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This PR migrates presubmit tests to run using gotestsum, and stops the
use of go-junit-report to parse logs.

related: b/473558736
…13546)

PR created by the Librarian CLI to generate Cloud Client Libraries code
from protos.

BEGIN_COMMIT

BEGIN_NESTED_COMMIT
feat: Update Compute Engine v1beta API to revision 20251210 (googleapis#1138)


PiperOrigin-RevId: 
Library-IDs: compute
Source-link:
[googleapis/googleapis@d4a34bf0](googleapis/googleapis@d4a34bf0)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
feat: Update Compute Engine v1 API to revision 20251210 (googleapis#1137)


PiperOrigin-RevId: 
Library-IDs: compute
Source-link:
[googleapis/googleapis@c2ec846d](googleapis/googleapis@c2ec846d)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
feat: add POSTGRES_18 to DatabaseVersion


PiperOrigin-RevId: 852794094
Library-IDs: alloydb
Source-link:
[googleapis/googleapis@a745ee41](googleapis/googleapis@a745ee41)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
feat: add streaming function call argument API changes


PiperOrigin-RevId: 852409018
Library-IDs: aiplatform
Source-link:
[googleapis/googleapis@286c66a5](googleapis/googleapis@286c66a5)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
docs: A comment for field `name` in message
`.google.cloud.aiplatform.v1beta1.FunctionCall` is changed


PiperOrigin-RevId: 852409018
Library-IDs: aiplatform
Source-link:
[googleapis/googleapis@286c66a5](googleapis/googleapis@286c66a5)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
docs: A comment for field `args` in message
`.google.cloud.aiplatform.v1beta1.FunctionCall` is changed


PiperOrigin-RevId: 852409018
Library-IDs: aiplatform
Source-link:
[googleapis/googleapis@286c66a5](googleapis/googleapis@286c66a5)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
feat: add custom prompt config in the request and return prompt in the
response


PiperOrigin-RevId: 852383212
Library-IDs: speech
Source-link:
[googleapis/googleapis@1a141530](googleapis/googleapis@1a141530)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
feat: update min_speaker_count and max_speaker_count to be optional


PiperOrigin-RevId: 852383212
Library-IDs: speech
Source-link:
[googleapis/googleapis@1a141530](googleapis/googleapis@1a141530)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
docs: Clarify that min_speaker_count and max_speaker_count in
SpeakerDiarizationConfig are not currently used


PiperOrigin-RevId: 852383212
Library-IDs: speech
Source-link:
[googleapis/googleapis@1a141530](googleapis/googleapis@1a141530)
END_NESTED_COMMIT

BEGIN_NESTED_COMMIT
docs: Update guidance on how to enable speaker diarization; to enable,
set the diarization_config field to an empty SpeakerDiarizationConfig
message


PiperOrigin-RevId: 852383212
Library-IDs: speech
Source-link:
[googleapis/googleapis@1a141530](googleapis/googleapis@1a141530)
END_NESTED_COMMIT

END_COMMIT

This pull request is generated with proto changes between

[googleapis/googleapis@ef6a532b](googleapis/googleapis@ef6a532)
(exclusive) and

[googleapis/googleapis@d4a34bf0](googleapis/googleapis@d4a34bf)
(inclusive).

Librarian Version: v0.0.0-20251218164811-cd2252e38d0a
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-go@sha256:718167d5c23ed389b41f617b3a00ac839bdd938a6bd2d48ae0c2f1fa51ab1c3d
…oogleapis#13536)

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from
0.44.0 to 0.45.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/crypto/commit/4e0068c0098be10d7025c99ab7c50ce454c1f0f9"><code>4e0068c</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/crypto/commit/e79546e28b85ea53dd37afe1c4102746ef553b9c"><code>e79546e</code></a>
ssh: curb GSSAPI DoS risk by limiting number of specified OIDs</li>
<li><a
href="https://github.com/golang/crypto/commit/f91f7a7c31bf90b39c1de895ad116a2bacc88748"><code>f91f7a7</code></a>
ssh/agent: prevent panic on malformed constraint</li>
<li><a
href="https://github.com/golang/crypto/commit/2df4153a0311bdfea44376e0eb6ef2faefb0275b"><code>2df4153</code></a>
acme/autocert: let automatic renewal work with short lifetime certs</li>
<li><a
href="https://github.com/golang/crypto/commit/bcf6a849efcf4702fa5172cb0998b46c3da1e989"><code>bcf6a84</code></a>
acme: pass context to request</li>
<li><a
href="https://github.com/golang/crypto/commit/b4f2b62076abeee4e43fb59544dac565715fbf1e"><code>b4f2b62</code></a>
ssh: fix error message on unsupported cipher</li>
<li><a
href="https://github.com/golang/crypto/commit/79ec3a51fcc7fbd2691d56155d578225ccc542e2"><code>79ec3a5</code></a>
ssh: allow to bind to a hostname in remote forwarding</li>
<li>See full diff in <a
href="https://github.com/golang/crypto/compare/v0.44.0...v0.45.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/crypto&package-manager=go_modules&previous-version=0.44.0&new-version=0.45.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/google-cloud-go/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Complete rewrite of storage.MultiRangeDownloader. The new design should
be more resilient to concurrency issues, deadlocks, retries, etc.

---------

Co-authored-by: Priti Chattopadhyay <cpriti@google.com>
TODO: on adding the transport type as we need to make Prime() rpc
blocking.

@nimf nimf left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM with minor comments

Comment thread bigtable/internal/transport/connpool.go Outdated
Comment thread bigtable/internal/transport/connpool_helper_test.go Outdated
}
}

if err := ctx.Err(); err != nil {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

we don't need to check context error anymore?

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

err != nil covers it.

name string
dialFunc func() (*BigtableConn, error)
primeErrors []error
primeDelay time.Duration

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

not used?

wantPrimeCalls: 3,
},
{
name: "Context Timeout",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

do we need to test context timeout after one or more failed prime attempts?

cpriti-os and others added 12 commits January 8, 2026 03:32
…3553)

PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

Librarian Version: v0.0.0-20251218164811-cd2252e38d0a
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-go@sha256:718167d5c23ed389b41f617b3a00ac839bdd938a6bd2d48ae0c2f1fa51ab1c3d
<details><summary>ai: 0.15.0</summary>

##
[0.15.0](googleapis/google-cloud-go@ai/v0.14.0...ai/v0.15.0)
(2026-01-08)

### Features

* add support for GroundingMetadata.google_maps_widget_context_token
(PiperOrigin-RevId: 846116816)
([db65e79](googleapis@db65e792))

* add support for RetrievalConfig (PiperOrigin-RevId: 846118142)
([db65e79](googleapis@db65e792))

* add IMAGE_RECITATION reason when generation is stopped due to
recitation (PiperOrigin-RevId: 846116816)
([db65e79](googleapis@db65e792))

* add support for GoogleMaps and FileSearch tools (PiperOrigin-RevId:
846118142)
([db65e79](googleapis@db65e792))

* add json_name for GenerationConfig.response_json_schema_ordered field
(PiperOrigin-RevId: 846116816)
([db65e79](googleapis@db65e792))

</details>


<details><summary>aiplatform: 1.113.0</summary>

##
[1.113.0](googleapis/google-cloud-go@aiplatform/v1.112.0...aiplatform/v1.113.0)
(2026-01-08)

### Features

* add streaming function call argument API changes (PiperOrigin-RevId:
852409018)
([d19e89c](googleapis@d19e89ca))

* Add Lustre support to the Vertex Training Custom Job API
(PiperOrigin-RevId: 846415033)
([db65e79](googleapis@db65e792))

### Documentation

* A comment for field `name` in message
`.google.cloud.aiplatform.v1beta1.FunctionCall` is changed
(PiperOrigin-RevId: 852409018)
([d19e89c](googleapis@d19e89ca))

* A comment for field `args` in message
`.google.cloud.aiplatform.v1beta1.FunctionCall` is changed
(PiperOrigin-RevId: 852409018)
([d19e89c](googleapis@d19e89ca))

* Update comments for machine resources and autoscaling
(PiperOrigin-RevId: 846415033)
([db65e79](googleapis@db65e792))

</details>


<details><summary>alloydb: 1.20.0</summary>

##
[1.20.0](googleapis/google-cloud-go@alloydb/v1.19.0...alloydb/v1.20.0)
(2026-01-08)

### Features

* add POSTGRES_18 to DatabaseVersion (PiperOrigin-RevId: 852794094)
([d19e89c](googleapis@d19e89ca))

* add POSTGRES_18 to DatabaseVersion (PiperOrigin-RevId: 845801340)
([db65e79](googleapis@db65e792))

</details>


<details><summary>apiregistry: 0.1.0</summary>

##
[0.1.0](googleapis/google-cloud-go@apiregistry/v0.0.0...apiregistry/v0.1.0)
(2026-01-08)

### Features

* add new clients (googleapis#13525) (PiperOrigin-RevId: 848064295)
([1c4f400](googleapis@1c4f4008))

### Documentation

* another bulk typo correction (googleapis#13527)
([90a4f21](googleapis@90a4f21f))

</details>


<details><summary>artifactregistry: 1.19.0</summary>

##
[1.19.0](googleapis/google-cloud-go@artifactregistry/v1.18.0...artifactregistry/v1.19.0)
(2026-01-08)

### Features

* add Fingerprint to Artifact Registry Version resource
(PiperOrigin-RevId: 846851972)
([db65e79](googleapis@db65e792))

### Documentation

* update the description of ExportArtifact (PiperOrigin-RevId:
846851972)
([db65e79](googleapis@db65e792))

</details>


<details><summary>compute: 1.53.0</summary>

##
[1.53.0](googleapis/google-cloud-go@compute/v1.52.0...compute/v1.53.0)
(2026-01-08)

### Features

* Update Compute Engine v1 API to revision 20251210 (googleapis#1137)
([d19e89c](googleapis@d19e89ca))

* Update Compute Engine v1beta API to revision 20251210 (googleapis#1138)
([d19e89c](googleapis@d19e89ca))

</details>


<details><summary>errorreporting: 0.4.0</summary>

##
[0.4.0](googleapis/google-cloud-go@errorreporting/v0.3.2...errorreporting/v0.4.0)
(2026-01-08)

### Bug Fixes

* update golang.org/x/net to 0.37.0
([1144978](googleapis@11449782))

* update google.golang.org/api to 0.229.0
([3319672](googleapis@3319672f))

* upgrade gRPC service registration func An update to Go gRPC Protobuf
generation will change service registration function signatures to use
an interface instead of a concrete type in generated .pb.go service
files. This change should affect very few client library users. See
release notes advisories in
googleapis#11025.
(PiperOrigin-RevId: 817164257)
([a33d766](googleapis@a33d7666))

* update golang.org/x/net to v0.33.0
([e9b0b69](googleapis@e9b0b696))

### Documentation

* automated code change (PiperOrigin-RevId: 802074437)
([a33d766](googleapis@a33d7666))

* Removes references as a &amp;googleapis#34;global-only&amp;googleapis#34; service
(PiperOrigin-RevId: 652832022)
([a33d766](googleapis@a33d7666))

* Updates documentation with regional resource names for multiple
requests (PiperOrigin-RevId: 652832022)
([a33d766](googleapis@a33d7666))

</details>


<details><summary>geminidataanalytics: 0.5.0</summary>

##
[0.5.0](googleapis/google-cloud-go@geminidataanalytics/v0.4.0...geminidataanalytics/v0.5.0)
(2026-01-08)

### Features

* add LookerGoldenQuery to Context (PiperOrigin-RevId: 845792138)
([db65e79](googleapis@db65e792))

### Documentation

* another bulk typo correction (googleapis#13527)
([90a4f21](googleapis@90a4f21f))

* fix typo in README.md entries (googleapis#13526)
([ac32b85](googleapis@ac32b851))

</details>


<details><summary>longrunning: 0.8.0</summary>

##
[0.8.0](googleapis/google-cloud-go@longrunning/v0.7.0...longrunning/v0.8.0)
(2026-01-08)

### Bug Fixes

* upgrade gRPC service registration func An update to Go gRPC Protobuf
generation will change service registration function signatures to use
an interface instead of a concrete type in generated .pb.go service
files. This change should affect very few client library users. See
release notes advisories in
googleapis#11025.
(PiperOrigin-RevId: 833829944)
([185951b](googleapis@185951b3))

</details>


<details><summary>maintenance: 0.3.0</summary>

##
[0.3.0](googleapis/google-cloud-go@maintenance/v0.2.0...maintenance/v0.3.0)
(2026-01-08)

### Documentation

* another bulk typo correction (googleapis#13527)
([90a4f21](googleapis@90a4f21f))

* fix typo in README.md entries (googleapis#13526)
([ac32b85](googleapis@ac32b851))

* A comment for field `filter` in message
`.google.cloud.maintenance.api.v1.SummarizeMaintenancesRequest` is
changed (PiperOrigin-RevId: 845900064)
([db65e79](googleapis@db65e792))

</details>


<details><summary>speech: 1.29.0</summary>

##
[1.29.0](googleapis/google-cloud-go@speech/v1.28.1...speech/v1.29.0)
(2026-01-08)

### Features

* add custom prompt config in the request and return prompt in the
response (PiperOrigin-RevId: 852383212)
([d19e89c](googleapis@d19e89ca))

* update min_speaker_count and max_speaker_count to be optional
(PiperOrigin-RevId: 852383212)
([d19e89c](googleapis@d19e89ca))

### Documentation

* Clarify that min_speaker_count and max_speaker_count in
SpeakerDiarizationConfig are not currently used (PiperOrigin-RevId:
852383212)
([d19e89c](googleapis@d19e89ca))

* Update guidance on how to enable speaker diarization; to enable, set
the diarization_config field to an empty SpeakerDiarizationConfig
message (PiperOrigin-RevId: 852383212)
([d19e89c](googleapis@d19e89ca))

</details>
…ationQueries (googleapis#13558)

Fixes flaky datastore integration test by using dynamic ReadTime in
retries.

Fixes: googleapis#11491


After fix:

```go
$ go test -count=25 -timeout 45m -run ^TestIntegration_AggregationQueries$
2026/01/08 16:15:44 Setting up tests to run on databaseID: ""
PASS
ok      cloud.google.com/go/datastore   44.841s
$ 
```
…#13557)

Updated `datastore/integration_test.go` to use `suffix` in `NameKey`
construction for `TestIntegration_IgnoreFieldMismatch`. This ensures the
test operates on isolated entities, preventing flakey `datastore: no
such entity` errors caused by collisions.

Fixes: googleapis#12808 

After fix:

```go
$ go test -count=20 -timeout 45m -run ^TestIntegration_IgnoreFieldMismatch$
2026/01/08 15:42:41 Setting up tests to run on databaseID: ""
PASS
ok      cloud.google.com/go/datastore   47.186s
$ 
```
…st (googleapis#13559)

Fixes: googleapis#13552

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This PR also modifies some emulator_test.sh driver scripts so that they
also use gotestsum.
…is#13562)

I'm cleaning up the GitHub teams. In Cloud SDK, the responsibility of
the logging libraries have moved to the language teams. I believe it's
the same for the Go's logging library. I went ahead with deleting the
googleapis/api-logging-go-reviewers team (Kevin was the only member).
…3568)

PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

Librarian Version: v0.7.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-go@sha256:718167d5c23ed389b41f617b3a00ac839bdd938a6bd2d48ae0c2f1fa51ab1c3d
<details><summary>storage: 1.59.0</summary>

##
[1.59.0](googleapis/google-cloud-go@storage/v1.58.0...storage/v1.59.0)
(2026-01-09)

### Features

* add default checksums for appendable writer (excludes appendable
takeover writer) (googleapis#13379)
([647baf3](googleapis@647baf32))

### Bug Fixes

* refactor MultiRangeDownloader to resolve deadlock and race conditions
(googleapis#13524)
([1cfd100](googleapis@1cfd100)

</details>
bhshkh and others added 17 commits February 6, 2026 11:19
)

Fixes: googleapis#2949

When a struct field is marked with noindex, this property should be
propagated to nested properties (This was solved in Node as well
go/excludefromindexes-nested-fields). This works correctly for standard
structs, but was failing for nested structs that implement
PropertyLoadSaver. The failures manifested as "string property too long
to index" errors because the client-side validation incorrectly assumed
the nested properties were indexed and thus subject to the 1500-byte
limit.

This change updates save.go to explicitly propagate the noIndex status
when recursing into PropertyLoadSaver entities (via the *Entity type in
interfaceToProto).
…ogleapis#13807)

1. Fixes emulator connection scheme (Issue googleapis#10964):
Aligns datastore client behavior with bigtable by using the
passthrough:/// scheme for emulator connections.
Uses regex to robustly strip existing schemes (http://, https://,
passthrough:///) from the DATASTORE_EMULATOR_HOST environment variable
before prepending passthrough:///.
This ensures reliable connections to local emulators and avoids
potential gRPC name resolution issues.

2. Fixes and tests nil key filtering (Issue googleapis#13499):
Fix: Removed a redundant reflect.ValueOf(pf.Value).Interface() call in
toProto which caused a panic when pf.Value was an untyped nil. The value
is now passed directly to interfaceToProto, which handles nil correctly.

Fixes googleapis#10964 Fixes googleapis#13499
…pis#13809)

feat: update image to
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-go@sha256:19bb93e8f1f916c61b597db2bad65dc432f79baaabb210499d7d0e4ad1dffe29

This PR also demonstrates that feature enablement is being driven from
https://github.com/googleapis/google-cloud-go/blob/main/.librarian/generator-input/repo-config.yaml
as the MTLS feature is not enabled in bigquery/v2 there, thus removing
the features from the generated code. I'll add it back in a subsequent
PR (this module is not currently being released).
sushanb added a commit to googleapis/google-cloud-go that referenced this pull request Feb 7, 2026
sushanb added a commit that referenced this pull request Jul 10, 2026
… non-blocking) and googleapis#16 (metrics fields)

Tests (13 new, all passing):
- Diverter: LoadZero/LoadOne counter assertions (spec googleapis#14)
- session_test: ForceClose_SendsNoCloseSessionRequest, Close_IdempotentAcrossNCalls (spec #5)
- lazy_pool_test: NilPoolAndNilOpenReturnNilNil, FailedOpenNotCached (spec #11)
- table_test: MatView_MutateRowReturnsErrWriteNotSupported, ReadAndWritePoolsDoNotShareSessions (spec #11)
- client_configuration_manager_test: MinPollingIntervalClamp (spec googleapis#13)
- table_shim_test: SampleRowKeys/ApplyBulk/ApplyReadModifyWrite_AlwaysClassic,
  NilSession_AllMethodsFallBackToClassic, SessionErrorNotRetriedOnClassic (spec googleapis#14 + cross-cite #9)

Specs:
- SESSION_SPEC.md googleapis#15: all /-z debug pages MUST NOT block hot-path latencies
  (snapshot-not-view, RLock-only, bounded work, hung-pool-must-not-hang-handler).
- SESSION_SPEC.md googleapis#16: cluster_id/zone_id/transport peer MUST be populated
  per-attempt on BOTH classic and session paths, from path-specific sources
  (classic: ResponseParams unmarshal; session: InvokeResult.ClusterInfo +
  Session.peerInfo). No cross-path source leakage.
- SESSION_COMPONENT_SPEC.md Part C: 5 new ownership rows for per-attempt
  ClusterInfo / transport peer labels (classic vs session) and debug
  snapshot lock discipline.
- SESSION_SPEC_TESTS.md: coverage map updated — 13 tests moved from
  MISSING/PARTIAL to COVERED; 11 new pending-test rows added for googleapis#15 and googleapis#16.
- session-reviewer agent: 14→16 invariants; debugview/** added to trigger paths.
- Slide deck: two new cells for googleapis#15 and googleapis#16.
sushanb added a commit that referenced this pull request Jul 10, 2026
Restructures the spec-driven review deck from a 5-slide feature tour
into a 4-slide 'why we moved from one-shot prompting to specs' story:

- Slide 1 — one-shot prompting definition + the three PRs that shipped
  this way (googleapis#19987 DirectAccessChecker, googleapis#20027 ChannelPrimer, googleapis#20099
  client-side-metrics decouple). Common shape: extract one implicitly-
  unary abstraction into an interface.
- Slide 2 — Jetstream is 30k+ LOC; one-shot breaks. Introduces the five
  spec files with verified invariant counts (10 / 4 / 5 / 3 / 12+PartC)
  and one illustrative rule per spec.
- Slide 3 — SESSION_COMPONENT_SPEC.md tour: Part A (7-layer descriptive
  map), Part B (12 boundary MUST-rules with grep patterns), Part C
  (ownership matrix excerpts).
- Slide 4 — three prompt sizes with real examples from this branch:
  (1) simple refactor — activeVRPC/casActiveVRPC accessor extraction;
  (2) logic addition — adaptive session-creation throttler + how the
  spec invariants (POOL #5, CLIENT #3, B6) chain together;
  (3) big feature — unified debugview/ (7 z-pages behind one Handler)
  and how B3, POOL #4, B10 crystallized during that refactor.
  Plus reviewer-agent flow and PASS/VIOLATION/AMBIGUOUS semantics.

CSS and navigation unchanged. Counter reflects 4 slides. Companion
specs-deck.md not updated in this commit — will follow.
sushanb added a commit that referenced this pull request Jul 20, 2026
…atchdog

Extract fakeBigtableServer into integration_session_fake_server_test.go
and sessionTestHarness into integration_session_harness_test.go. The
harness grows a functional-options API — withPoolSize(min, max),
withFakeSetup(fn), withoutRoutingWait(), withReverseCloseOrder() — that
lets the four previously hand-rolled test bodies (PeerInfo AFE parsing,
ServerErrorRetriesOnDifferentSession, reactive-watchdog integration,
ClientCloseSendsCloseSession) drop their ~5 lines of duplicated bufconn
+ grpc.Server + dialer + ClientConfig boilerplate apiece. withPoolSize
sets both the fake's advertised sizing AND the ClientConfig's requested
sizing in one place, so a sync mismatch (fake defaults would otherwise
overwrite the client's ask via the config manager) becomes unrepresentable.

Collapse the fake's parallel `vrpcRequests []*btpb.VirtualRpcRequest` +
`vrpcStreamIdxs []int64` slices into a single `[]capturedVRpc{req,
streamIdx}`. Consumers that need both fields now read them from one
snapshot instead of two, eliminating a between-snapshot alignment race
in ServerErrorRetriesOnDifferentSession.

Add TestIntegration_SessionVRpc_HeartbeatWatchdogReactiveToSessionParameters:
queueVRpcStalls(1) + SessionParams KeepAlive=100ms proves the reactive
watchdog fires on the atomic-shortened deadline. Retry succeeds on the
peer session in ~300ms + backoff; asserts elapsed<=1.5s,
PoolSnapshot.CloseReasons["MissedHeartbeat"]>0, and closeSessionCount==0
(ForceClose skips graceful CloseSession per SESSION_SPEC #5/#8).

integration_session_test.go: 1029 -> 902 lines.
sushanb added a commit that referenced this pull request Jul 22, 2026
…lers

handleVRPCResponse and handleVRPCErrorResponse were 90% identical —
same state gate, activeVRPC nil check, id-match guard, drainSlot,
counter bump, cancel-vs-deliver branch, notifySlotDrained, and Closing
signalQuiescent, differing only in the frame proto, nil-tag, counter,
and vrpcResult payload. Fold the shared skeleton into a private
routeVRPCFrame(rpcID, frameName, nilTag, counter, result) so the two
call sites can't drift on any of the Java-parity gating.

Log wording change: the wrongState assertion + drop debugf now use the
proto frame name uniformly ("VirtualRpcResponse" / "ErrorResponse")
instead of the split "vRPC response"/"vRPC error" (wrongState) vs
proto name (debugf) pair. No callers grep the text.

Behavioral parity verified by session-reviewer (SESSION_SPEC #2/#5/#6/
#10) and session-component-review (Part B B2/B7/B11 + Part C).
sushanb added a commit that referenced this pull request Jul 23, 2026
…StartMaintenance

Follow-up to bf49fd5. The single-pass driver on SessionPoolImpl does
more than scaling — it samples the time-series ring, samples every active
session's uptime, sweeps stuck WaitServerClose sessions, and only THEN
runs the sizer and (if it asked for growth) spawns createSession
goroutines. "Scaling" was misleading for the first three of those; the
new name reflects that this is a general-purpose maintenance driver
whose scaling decision is one of four things it does.

  PerformScaling            → Maintain
  StartBackgroundScaling    → StartMaintenance

Pure rename — no behavior change. Touches the SessionPool interface
(session/lazy_pool.go), sessionClient.getOrCreatePool bootstrap
(session/client.go), the definition + adjacent docs (session_pool_scaling.go,
session_pool_lifecycle.go), the internal callers in CheckoutSession +
onClosing (session_pool.go, session_pool_lifecycle.go), and the test
function names/comments.

Verified against SESSION_POOL_SPEC #5 (scaling gated + passive shrink),
CLIENT_SIDE_METRICS_SPEC #3 (sampleActiveUptimes sole-writer), and the
SESSION_COMPONENT_SPEC boundary/ownership rules — all pass. Two spec
prose spots still call the loop "pool scaling loop"; deferred to a
paired spec update.
sushanb added a commit that referenced this pull request Jul 23, 2026
Address gemini-code-assist review on session_vrpc.go:153-162: the Send-
failure branch was firing hooks.onSlotDrained() and signalQuiescent()
unconditionally, ignoring drainSlot's ok return. When concurrent teardown
(cancelActiveRPCs / ForceClose) beats the Invoke path to freeing the
slot, the teardown path is responsible for pool notification via
OnClosing/OnClose — firing onSlotDrained on the losing path violates
the SessionHooks contract that reserves it for the drain-succeeded
path (SESSION_SPEC #5/#10).

Wrap both calls in `if _, _, ok := s.drainSlot(rpc); ok { ... }`.
Idempotence of the underlying ops isn't the point — the design says
teardown paths do NOT fire onSlotDrained, and this brings the
Send-failure branch back in line.
sushanb added a commit that referenced this pull request Jul 23, 2026
Address gemini-code-assist review on session_vrpc.go:153-162: the Send-
failure branch was firing hooks.onSlotDrained() and signalQuiescent()
unconditionally, ignoring drainSlot's ok return. When concurrent teardown
(cancelActiveRPCs / ForceClose) beats the Invoke path to freeing the
slot, the teardown path is responsible for pool notification via
OnClosing/OnClose — firing onSlotDrained on the losing path violates
the SessionHooks contract that reserves it for the drain-succeeded
path (SESSION_SPEC #5/#10).

Wrap both calls in `if _, _, ok := s.drainSlot(rpc); ok { ... }`.
Idempotence of the underlying ops isn't the point — the design says
teardown paths do NOT fire onSlotDrained, and this brings the
Send-failure branch back in line.
sushanb added a commit that referenced this pull request Jul 23, 2026
Address gemini-code-assist review on session_vrpc.go:153-162: the Send-
failure branch was firing hooks.onSlotDrained() and signalQuiescent()
unconditionally, ignoring drainSlot's ok return. When concurrent teardown
(cancelActiveRPCs / ForceClose) beats the Invoke path to freeing the
slot, the teardown path is responsible for pool notification via
OnClosing/OnClose — firing onSlotDrained on the losing path violates
the SessionHooks contract that reserves it for the drain-succeeded
path (SESSION_SPEC #5/#10).

Wrap both calls in `if _, _, ok := s.drainSlot(rpc); ok { ... }`.
Idempotence of the underlying ops isn't the point — the design says
teardown paths do NOT fire onSlotDrained, and this brings the
Send-failure branch back in line.
sushanb added a commit that referenced this pull request Jul 24, 2026
Address gemini-code-assist review on session_vrpc.go:153-162: the Send-
failure branch was firing hooks.onSlotDrained() and signalQuiescent()
unconditionally, ignoring drainSlot's ok return. When concurrent teardown
(cancelActiveRPCs / ForceClose) beats the Invoke path to freeing the
slot, the teardown path is responsible for pool notification via
OnClosing/OnClose — firing onSlotDrained on the losing path violates
the SessionHooks contract that reserves it for the drain-succeeded
path (SESSION_SPEC #5/#10).

Wrap both calls in `if _, _, ok := s.drainSlot(rpc); ok { ... }`.
Idempotence of the underlying ops isn't the point — the design says
teardown paths do NOT fire onSlotDrained, and this brings the
Send-failure branch back in line.
sushanb added a commit that referenced this pull request Jul 27, 2026
…ClientConfig

Fallback values (headroom, LB strategy, budget size, penalty, consecutive-
failure threshold) in NewSessionPoolImpl now read from
defaultClientConfig.SessionConfiguration.SessionPoolConfiguration via the
existing defaultPoolConfig helper — single source of truth in
default_client_config.go instead of literals duplicated in the constructor.

Also update SESSION_POOL_SPEC.md #5 to drop the stale "default 10%"
parenthetical (default now sourced from the proto).

Ports the same change opened on PR googleapis#20225 against upstream (commit landed
there via the pool-bundle PR).
sushanb added a commit that referenced this pull request Jul 30, 2026
sessionTable.Close was a no-op today because session pools are shared
via sessionClient.sessionPools[poolKey] and were only reclaimed by
sessionClient.Close. That drift meant bigtable.Client's TTL cache
could evict a handle without freeing its underlying session pool +
streams + goroutines.

Design: add sessionClient.releaseSessionPool(key) and a
buildLazyReleaser helper symmetric with the existing buildLazyOpener.
OpenTable / OpenAuthorizedView / OpenMaterializedView now pass close
closures to newSessionTable; sessionTable.Close invokes both (nil-safe
for materialized views' missing write side) and joins any errors via
errors.Join. releaseSessionPool no-ops cleanly when sessionPools is
nil (client already closed) or when the key is absent (idempotent),
matching the snapshot-under-lock + teardown-outside pattern used by
sessionClient.Close.

No refcount added: bigtable.Client's sessionTableCache guarantees
at-most-one sessionTable per resource at any moment, so the cache
IS the 'refcount of at-most-1'. Doc on sessionTable.Close names this
invariant; if a future caller bypasses the cache the design must
gain a refcount then. Api.go doc updated to match.

Also fixes audit finding #5 (cache-close race): sessionTableCache
gains a closed flag flipped under mu by close(). getOrOpen slow
path re-checks it before insert — a slow openFn straddling close()
now releases its freshly-opened api and returns nil (TableShim
treats nil session as classic-only) instead of orphaning a handle
whose Close would never fire. Without this the freshly-real
teardown work above would turn every close-race into a per-race
session-pool leak.

Drive-by: switch the closeCountingTable test helper's counter from
*int to *atomic.Int32. The sweeper-vs-test-goroutine race on that
counter is pre-existing (fires under full-package -race on the base
branch too) but was blocking the race-stress verification for this
change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.