Skip to content

fix(bigtable): release session-creation budget on GO_AWAY during STAR…#13887

Open
mutianf wants to merge 35 commits into
googleapis:mainfrom
mutianf:fix/session-budget-goaway-leak
Open

fix(bigtable): release session-creation budget on GO_AWAY during STAR…#13887
mutianf wants to merge 35 commits into
googleapis:mainfrom
mutianf:fix/session-budget-goaway-leak

Conversation

@mutianf

@mutianf mutianf commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

…TING

Stopgap for the session-protocol wedge: on a pod whose directpath negotiates
a non-ALTS (CFE/TLS) connection, the enforcer throws out of onHeaders, grpc
re-codes it to CANCELLED "Failed to read headers", and every session dies in
state STARTING. Recovery then relies solely on FallbackChannelPool's error-rate
switch to cloudpath, which can fail to fire (out-of-range error_rate_threshold,
or a thrown metrics callback killing the sampler), wedging the pod indefinitely.

Until that switch is hardened, don't install the enforcer so the non-ALTS
connection is used (grpc's own directpath->CFE fallback) instead of hard-failing.
FallbackChannelPool plumbing is left intact; restoring the enforcer is a one-line
change once the switch is fixed.
@mutianf
mutianf requested review from a team as code owners July 24, 2026 16:30

@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 fixes a budget slot leak in SessionPoolImpl when a session receives a GO_AWAY before completing the open handshake. It introduces a set to track session handles holding a budget reservation, ensuring exactly-once release on success or failure. A test case and fake server support are added to verify this scenario. The feedback suggests using System.nanoTime() instead of System.currentTimeMillis() in the test's polling loop to avoid potential flakiness from system clock adjustments.

Comment on lines +694 to +695
long deadlineMs = System.currentTimeMillis() + 5_000;
while (System.currentTimeMillis() < deadlineMs) {

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.

medium

Using System.currentTimeMillis() to measure elapsed time or timeouts can make tests flaky if the system clock is adjusted (e.g., via NTP synchronization) during execution. It is safer to use System.nanoTime() for monotonic time measurements.

Suggested change
long deadlineMs = System.currentTimeMillis() + 5_000;
while (System.currentTimeMillis() < deadlineMs) {
long deadlineNs = System.nanoTime() + 5_000_000_000L;
while (System.nanoTime() < deadlineNs) {

Neenu1995 and others added 25 commits July 24, 2026 12:39
…type mappings (googleapis#13812)

b/535194644

* **ParameterMetaData Implementation**: Implemented
`BigQueryParameterMetaData` to enable JDBC parameter metadata
introspection.
* **Dynamic Parameter Modes**: Added support for dynamic `IN`, `OUT`,
and `INOUT` parameter modes.
* **Accurate Type Mapping**: Mapped `LocalDateTime` to
`StandardSQLTypeName.DATETIME` and expanded standard SQL to Java type
mappings.
* **Null-Safety Guarding**: Added null checks for `parameterHandler` to
prevent `NullPointerException` during metadata resolution.
…enjdk-uber (googleapis#13845)

Bundle the uber jar which contains pre-compiled native BoringSSL
binaries for all major platforms. Allows users to easily use Conscrypt
without any need for platform detectors or any configuration steps on
their machines.

Follows the pattern of `grpc-netty-shaded` which also bundles the
binaries for major platforms
Remove legacy owlbot.py scripts and migrate configurations to librarian.yaml for the following libraries:
- kms
- logging
- monitoring
- monitoring-dashboards
- network-management
- os-login
- pubsub
- securitycenter
- service-management
- spanner
- tasks
- vision 

For googleapis/librarian#6931
…tement parameter setters (googleapis#13813)

b/535194644

* **Centralized Timezone Coercion**: Consolidated `Calendar` timezone
conversions in `BigQueryTypeCoercionUtility` using `java.time` APIs.
* **Temporal Helper Refactoring**: Extracted `setTemporalObject` helper
to eliminate duplicate temporal type logic across `setObject` overloads.
* **Defensive Copying & Unsupported Stubs**: Added defensive copying for
`Calendar` setters and replaced silent stubs with
`BigQueryJdbcSqlFeatureNotSupportedException`.
* **Expanded Test Suite**: Added unit and integration tests covering
temporal setters and calendar conversion edge cases.
The Renovate config in this repository needs migrating. Typically this
is because one or more configuration options you are using have been
renamed.

You don't need to merge this PR right away, because Renovate will
continue to migrate these fields internally each time it runs. But later
some of these fields may be fully deprecated and the migrations removed.
So it's a good idea to merge this migration PR soon.





🔕 **Ignore**: Close this PR and you won't be reminded about config
migration again, but one day your current config may no longer be valid.

❓ Got questions? Does something look wrong to you? Please don't hesitate
to [request help
here](https://redirect.github.com/renovatebot/renovate/discussions).


---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/googleapis/google-cloud-java).
Librarian version upgrade and the `generate -all` command:

```
(.venv) suztomo@suztomo:~/librarian-2026/google-cloud-java$ go run github.com/googleapis/librarian/cmd/librarian@latest update version
(.venv) suztomo@suztomo:~/librarian-2026/google-cloud-java$ V=$(go run github.com/googleapis/librarian/cmd/librarian@latest config get version)
(.venv) suztomo@suztomo:~/librarian-2026/google-cloud-java$ echo $V
v0.28.0
(.venv) suztomo@suztomo:~/librarian-2026/google-cloud-java$ go run github.com/googleapis/librarian/cmd/librarian@${V} generate --all
```

This didn't generate any diff.
### Problem
Jqwik version 1.9+ requires JDK 11+ at runtime. Since
`google-cloud-java` runs tests on JDK 8 matrix environments, Jqwik's
reflection-based class scanning fails when JSpecify 1.0.0 annotations
are present, causing `UnsupportedClassVersionError` or reflection
scanner crashes during JUnit test discovery on Java 8.

### Solution
This PR introduces a clean profile-based exclusion to isolate Jqwik on
Java 8 without impacting modern Java environments:
1. **Moved Jqwik dependency into `jqwik-tests` profile:** The
`net.jqwik:jqwik` library is no longer loaded globally; it is only added
to the test classpath on JDK 11+ (`[11,)`).
2. **Added `exclude-jqwik-on-java8` profile:** Active only when the JDK
is exactly `1.8`.
3. **Excluded Jqwik test compilation:** Inside the Java 8 profile, we
use `testExcludes` to skip compiling all Jqwik-based property tests
(e.g., `*PropertyTest.java`, `jqwik` packages, etc.) to prevent compile
errors when Jqwik is not on the classpath.
4. **Decoupled compilation dependencies:** Excluded
`RewindableByteBufferContentTest.java` on Java 8 as well, since it has
an import reference to a nested class inside
`RewindableContentPropertyTest.java` and would otherwise pull it into
compiler scope.

### Rationale
- Decouples Jqwik testing dependencies on Java 8 matrix builds,
preventing pipeline failures.
- Retains 100% test coverage for these property-based tests on modern
JDKs (11, 17, 21, etc.) since matrix builds continue to compile and run
them normally.
Ignore group updates with older generations so stale tablet addresses
cannot overwrite newer skip state. At equal generation, retain
skip-and-empty tablets unless the incoming tablet incarnation is
lexicographically newer, which permits legitimate recovery while
rejecting frontend-local availability flaps.

Gate endpoint recreation on active finder membership and hold the
reconciliation lock through insertion so concurrent removal cannot
resurrect an inactive address.
Updated googleapis commitish in librarian.yaml to
googleapis/googleapis@45c8d8a

💡 **Note:** If this PR is still open when the daily update workflow runs
next, it will be closed and replaced with a new PR containing the latest
updates.
…values (googleapis#13718)

Fixes
[googleapis#12938](googleapis#12938)

This fixes `BigQueryResultImpl.ResultSet#getLong(int)` for Read API
rows. The index-based getter previously delegated to `getInt(String)`,
which truncated large INT64 values and could return negative results.

A regression test now verifies that `getLong(int)` preserves a value
larger than `Integer.MAX_VALUE`.

Tests:
- `mvn -pl java-bigquery/google-cloud-bigquery
-Dtest=BigQueryResultImplTest -DskipITs=true test`
…nsive copying across statement interfaces (googleapis#13805)

b/535194644

* **Hardened CallableStatement Getters**: Replaced reversed
`isAssignableFrom` checks with `instanceof`, `Number`/`Date` coercions,
and direct delegation to `getObject()`.
* **Standardized JDBC Parameter Names**: Updated synthetic parameter
names (`arg0`, `arg1`) to standard JDBC names (`parameterIndex`,
`parameterName`, `scale`).
* **Symmetrical Timezone Coercion**: Centralized `Calendar` timezone
conversions using `java.time` APIs across statements and result sets.
* **ParameterMetaData & Dynamic Modes**: Added support for dynamic `IN`,
`OUT`, and `INOUT` parameter modes in `BigQueryParameterMetaData`.
* **PreparedStatement Hardening**: Added defensive copying for
`Calendar` setters and replaced silent stubs with explicit unsupported
feature exceptions.
…#13829)

This PR extends the session-based API path to support
`BigtableDataClientFactory`.

Now the factory creates a single shared `ChannelPool` and
`ClientConfigurationManager` once and hands lightweight child clients a
reference to both.

The bulk of the implementation work is a rewrite of `ChannelPoolDpImpl`
to correctly handle multiple tenants (different instances/app profiles)
sharing a single channel pool.

### `ChannelPoolDpImpl`: New Placement Model

#### Old design

The old pool organized channels into `AfeChannelGroup` objects — one
deque of channels per observed AFE. When a channel's first session
revealed its AFE (via `onBeforeSessionStart`), the channel was rehomed
from the temporary `startingGroup` into the matching `AfeChannelGroup`,
creating one if it didn't exist. New streams were then placed by picking
the group with the fewest sessions.

  This design had a problem for the multi-tenant factory case:
AFE affinity was tracked per channel, but for factory children different
tenants on the same channel can be routed to different AFEs by RLS. A
channel in group "AFE-7" might route tenant A to AFE-7 but tenant B
somewhere else entirely.

#### New design

The new pool replaces the nested group structure with a flat `channels`
list plus a `routeObservations` map keyed on `(channelId, tenantKey) →
lastObservedAfeId`.

##### Data structures:
- `channels: List<ChannelWrapper>` — all channels in ACTIVE or DRAINING
state
- `routeObservations: Map<RouteKey, AfeId>` — the last AFE seen for a
given (channel, tenant) pair, populated on every `onBeforeSessionStart`
and self-healing as RLS routes drift over time
- `sessionsPerAfeId: Multiset<AfeId>` — global count of live sessions
per AFE, used to find underloaded targets
- `TenantKey` (new value type) — stamped onto `CallOptions` by
`TableBase` so the pool can distinguish tenants within the same shared
pool

##### Placement (`newStream`):

1. Capacity mode — find the AFE with the smallest session count that is
still below `softMaxPerGroup`:
- 3a — Preferred: pick the ACTIVE channel whose last observed route for
this tenant was that AFE, choosing the least-loaded among candidates.
This is the steady-state path: RLS is stable per (channel, tenant), so
repeat sessions for the same tenant land on the same AFE.
- 3b — Unobserved-tenant fallback: if no route observation exists for
this tenant on any channel, pick any ACTIVE channel with remaining
capacity (least-loaded). The actual AFE is unknown until
`onBeforeSessionStart` fires; `routeObservations` is updated then for
future placements.
2. Diversity mode — entered when all known AFEs are at cap, or the pool
is empty: prefer an ACTIVE channel with fewer than `softMaxPerGroup / 2`
outstanding streams. If none exists, open a new channel and absorb
whichever AFE it lands on.

##### Scale-in (DRAINING state):

The old "thinning" logic would call `channel.shutdown()` during
serviceChannels(). The new approach introduces a two-state channel
lifecycle (`ACTIVE` / `DRAINING`). When `serviceChannels()` decides to
shrink the pool it marks excess channels DRAINING — they stop accepting
new streams but continue serving existing ones. A DRAINING channel is
removed only when its `numOutstanding` reaches zero (in
`releaseChannel`). Drain candidates are chosen by `pickDrainCandidates`,
which prefers idle channels first, then least-recently-used, then
oldest.

##### Route observation cleanup:

`removeChannel` purges all `routeObservations` entries for the removed
channel's ID, preventing the map from growing unboundedly as channels
cycle.

### Other changes

#### `BigtableDataClientFactory` / `BigtableClientContext`:
- `BigtableDataClientFactory.create()` now calls
`BigtableClientContext.createForFactory()` (a new entry point) instead
of manually disabling sessions. The factory context initializes a shared
`ShimImpl` (channel pool + config manager) that is reused by all
children.
- `BigtableClientContext.createChild()` now creates a lightweight
`ShimImpl` child via `ShimImpl.createForFactoryChild()` rather than
sharing a `DisabledShim`.

#### `ShimImpl` / `Client`:
- `Client.channelPool` changed from a bare `ChannelPool` reference to
`Resource<ChannelPool>` so the factory-child constructor can hold a
shared (non-closing) reference and the standard constructor holds an
owned one.
- `ShimImpl.configManager` similarly wrapped in `Resource<>` so
`close()` is a no-op for factory children (the parent owns the manager's
lifecycle).
…rviceAccountCredentials, and RequestMetadataCallback (googleapis#13861)

### Problem
In JSpecify 1.0.0, the `@NullMarked` annotation targets
`ElementType.MODULE`. Because `ElementType.MODULE` was introduced in
Java 9, reflecting on `@NullMarked` classes under Java 8 (JDK 1.8)
throws `EnumConstantNotPresentExceptionProxy` wrapped in an
`ArrayStoreException`.

In `MutableCredentialsTest` and `SpannerPoolTest`, mock declarations for
`Credentials`, `ServiceAccountCredentials`, and
`RequestMetadataCallback` were created using the default
`mock(Class.class)` without setting `.withoutAnnotations()`. Mockito
attempts to copy annotations on the mock subclasses, triggering the
reflection crash on the JSpecify `@NullMarked` annotation during Java 8
CI pipelines.

### Solution
Replaced default `mock(...)` calls with `mock(...,
withSettings().withoutAnnotations())` for:
* `Credentials` in `SpannerPoolTest`
* `ServiceAccountCredentials` and `RequestMetadataCallback` in
`MutableCredentialsTest`

This disables annotation copying on these mocked instances and bypasses
the Java 8 reflection limitations.
…apis#13673)

This PR ports the Java client changes supporting `view_parameters` in
`ExecuteQueryRequest` (originally developed and reviewed internally in
CL 13080 / branch `add-view-parameters-support`).

### Changes
- Added `view_parameters` support to `BoundStatement` and its builder.
- Updated `BoundStatementTest` with unit tests for `view_parameters`.
- Updated `BoundStatementDeserializer` in test-proxy to handle
`view_parameters`.

### Verification
- Confirmed `ExecuteQueryRequest` in generated GAPIC proto library
already contains `view_parameters` support.
- Verified compilation and build across `google-cloud-bigtable` and
dependencies.
…34 in /google-cloud-jar-parent (googleapis#13785)

Bumps [ch.qos.logback:logback-core](https://github.com/qos-ch/logback)
from 1.5.33 to 1.5.34.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/qos-ch/logback/releases">ch.qos.logback:logback-core's
releases</a>.</em></p>
<blockquote>
<h2>Logback 1.5.34</h2>
<p><strong>2026-06-01 Release of logback version 1.5.34</strong></p>
<p>• In case certain StackTraceElement values returned by the
Throwable.getStackTrace method are null, StackTraceElementProxy
substitutes a dummy instance instead of throwing an
IllegalArgumentException. This resolves [issues <a
href="https://redirect.github.com/qos-ch/logback/issues/1040">#1040</a>](<a
href="https://redirect.github.com/qos-ch/logback/issues/1040">qos-ch/logback#1040</a>),
reported by Naotsugu Kobayashi.</p>
<p>• HardenedObjectInputStream will now throw an InvalidClassException
during deserialization attempts of Proxy classes. This change addresses
potential deserialization whitelist bypass vulnerability reported by <a
href="https://github.com/york-shen">York Shen</a> and registered as <a
href="https://www.cve.org/cverecord?id=CVE-2026-10532">CVE-2026-10532</a>.</p>
<p>• A bitwise identical binary of this version can be reproduced by
building from source code at commit
e62272ac152469aec1ede056c3c7d0d7314e7bfe associated with the tag
v_1.5.34. This release was built using Java &quot;21&quot; 2023-10-17
LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/qos-ch/logback/commit/e62272ac152469aec1ede056c3c7d0d7314e7bfe"><code>e62272a</code></a>
prepare release 1.5.34</li>
<li><a
href="https://github.com/qos-ch/logback/commit/1e9e926db1529b729a0e2d29fdee151c2aea0341"><code>1e9e926</code></a>
add resolveProxyClassRejectsDynamicProxies unit test</li>
<li><a
href="https://github.com/qos-ch/logback/commit/2de5cbe90b74fa284685304bc91321313b0d8e2f"><code>2de5cbe</code></a>
added StackTraceElementProxyTest, minor edits to AGENTS.md</li>
<li><a
href="https://github.com/qos-ch/logback/commit/0e9b9278b5d3f0b573762cd7b5482ed65244418e"><code>0e9b927</code></a>
in case StackTraceElement is null use a substitute, fixing
issues/1040</li>
<li><a
href="https://github.com/qos-ch/logback/commit/f7a0654c2b7e8e1c461e3d9e483e82ef969b5818"><code>f7a0654</code></a>
prevent resolveProxyClass bypass</li>
<li><a
href="https://github.com/qos-ch/logback/commit/249b81f3754f1fb58f8507f244a36c7a940854c0"><code>249b81f</code></a>
docs are no longer distributed</li>
<li><a
href="https://github.com/qos-ch/logback/commit/1c3b26a839f05b6bc1769e5a028ef326c711cec8"><code>1c3b26a</code></a>
start work on 1.5.34-SNAPSHOT</li>
<li>See full diff in <a
href="https://github.com/qos-ch/logback/compare/v_1.5.33...v_1.5.34">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[com.fasterxml.jackson:jackson-bom](https://redirect.github.com/FasterXML/jackson-bom)
| `2.22.0` → `2.22.1` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.fasterxml.jackson:jackson-bom/2.22.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.fasterxml.jackson:jackson-bom/2.22.0/2.22.1?slim=true)
|
|
[com.google.auth:google-auth-library-bom](https://redirect.github.com/googleapis/java-shared-config)
| `1.48.0` → `1.49.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.auth:google-auth-library-bom/1.49.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.auth:google-auth-library-bom/1.48.0/1.49.0?slim=true)
|
|
[com.google.cloud:grpc-gcp](https://redirect.github.com/googleapis/google-cloud-java/tree/main/grpc-gcp-java)
([source](https://redirect.github.com/googleapis/google-cloud-java/tree/HEAD/grpc-gcp-java))
| `1.11.0` → `1.12.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:grpc-gcp/1.12.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:grpc-gcp/1.11.0/1.12.0?slim=true)
|
|
[com.google.crypto.tink:tink](https://redirect.github.com/tink-crypto/tink-java)
| `1.22.0` → `1.23.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.crypto.tink:tink/1.23.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.crypto.tink:tink/1.22.0/1.23.0?slim=true)
|
|
[com.google.http-client:google-http-client](https://redirect.github.com/googleapis/google-http-java-client)
| `2.1.1` → `2.2.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.http-client:google-http-client/2.2.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.http-client:google-http-client/2.1.1/2.2.0?slim=true)
|
| [io.grpc:grpc-bom](https://redirect.github.com/grpc/grpc-java) |
`1.82.1` → `1.83.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-bom/1.83.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-bom/1.82.1/1.83.0?slim=true)
|
|
[io.opentelemetry.semconv:opentelemetry-semconv](https://redirect.github.com/open-telemetry/semantic-conventions-java)
| `1.42.0` → `1.43.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/io.opentelemetry.semconv:opentelemetry-semconv/1.43.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.opentelemetry.semconv:opentelemetry-semconv/1.42.0/1.43.0?slim=true)
|
|
[io.opentelemetry:opentelemetry-bom](https://redirect.github.com/open-telemetry/opentelemetry-java)
| `1.63.0` → `1.64.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/io.opentelemetry:opentelemetry-bom/1.64.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.opentelemetry:opentelemetry-bom/1.63.0/1.64.0?slim=true)
|
|
[org.apache.httpcomponents.client5:httpclient5](https://hc.apache.org/)
([source](https://redirect.github.com/apache/httpcomponents-client)) |
`5.6.1` → `5.6.2` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.httpcomponents.client5:httpclient5/5.6.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.httpcomponents.client5:httpclient5/5.6.1/5.6.2?slim=true)
|
| [org.conscrypt:conscrypt-openjdk-uber](https://conscrypt.org/)
([source](https://redirect.github.com/google/conscrypt)) | `2.6.0` →
`2.6.1` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.conscrypt:conscrypt-openjdk-uber/2.6.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.conscrypt:conscrypt-openjdk-uber/2.6.0/2.6.1?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](..googleapis/issues/7649) for more information.

---

### Release Notes

<details>
<summary>googleapis/google-cloud-java
(com.google.cloud:grpc-gcp)</summary>

###
[`v1.12.0`](https://redirect.github.com/googleapis/google-cloud-java/releases/tag/v1.12.0)

[Compare
Source](https://redirect.github.com/googleapis/google-cloud-java/compare/v1.11.0...v1.12.0)

##### Features

- \[aiplatform] add match service in aiplatform v1
([#&googleapis#8203;9438](https://redirect.github.com/googleapis/google-cloud-java/issues/9438))
([4ab7b4f](https://redirect.github.com/googleapis/google-cloud-java/commit/4ab7b4fd466bf488a646ac0ee8a019ca78c42efe))
- \[analyticsadmin] add `GetAdSenseLink`, `CreateAdSenseLink`,
`DeleteAdSenseLink`, `ListAdSenseLinks` methods to the Admin API v1alpha
([#&googleapis#8203;9434](https://redirect.github.com/googleapis/google-cloud-java/issues/9434))
([d9f948e](https://redirect.github.com/googleapis/google-cloud-java/commit/d9f948ef915cf1a118085a783c3e072ba0b54ccc))
- \[batch] add support for placement policies
([#&googleapis#8203;9439](https://redirect.github.com/googleapis/google-cloud-java/issues/9439))
([f30b899](https://redirect.github.com/googleapis/google-cloud-java/commit/f30b899f2b58945a33438fc35a207c51e4bf44a0))
- \[batch] add TaskStatus's new terminated state UNEXECUTED
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- \[batch] support order\_by in ListJobs and ListTasks requests
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- \[batch] support order\_by in ListJobs and ListTasks requests
([#&googleapis#8203;21](https://redirect.github.com/googleapis/google-cloud-java/issues/21))
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- \[batch] support order\_by in ListJobs and ListTasks requests
([#&googleapis#8203;9359](https://redirect.github.com/googleapis/google-cloud-java/issues/9359))
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- \[cloudchannel] added partition\_keys field to filter results from
FetchReportResults
([#&googleapis#8203;9437](https://redirect.github.com/googleapis/google-cloud-java/issues/9437))
([0857e33](https://redirect.github.com/googleapis/google-cloud-java/commit/0857e33e233232ac6e41de7ba3433036bdd0a2f6))
- \[cloudfunctions] ListFunctions now include metadata which indicates
whether a function is a `GEN_1` or `GEN_2` function
([#&googleapis#8203;9462](https://redirect.github.com/googleapis/google-cloud-java/issues/9462))
([d945618](https://redirect.github.com/googleapis/google-cloud-java/commit/d945618f4001d6e1853b84ab6964fcd026319c52))
- \[cloudkms] added VerifyConnectivity RPC
([#&googleapis#8203;9429](https://redirect.github.com/googleapis/google-cloud-java/issues/9429))
([81b9849](https://redirect.github.com/googleapis/google-cloud-java/commit/81b9849a7d0145a5bd202de877f61e3fb4cfdf7d))
- \[datamigration] add Oracle to PostgreSQL migration APIs
([#&googleapis#8203;9442](https://redirect.github.com/googleapis/google-cloud-java/issues/9442))
([d3ca29b](https://redirect.github.com/googleapis/google-cloud-java/commit/d3ca29ba6abcd21d7f276749d99b42cf2284bcd7))
- \[discoveryengine] enable safe search feature for site search
([#&googleapis#8203;9428](https://redirect.github.com/googleapis/google-cloud-java/issues/9428))
([7b673de](https://redirect.github.com/googleapis/google-cloud-java/commit/7b673de22a253b4faeb995b46581208343f84abb))
- \[language] Added client library support for ModerateText in the
Natural Language API (V1)
([#&googleapis#8203;9463](https://redirect.github.com/googleapis/google-cloud-java/issues/9463))
([14fea71](https://redirect.github.com/googleapis/google-cloud-java/commit/14fea7158fa442bbd8df98e76972cbe5b508157f))
- \[rapidmigrationassessment] new module for rapidmigrationassessment
([#&googleapis#8203;9467](https://redirect.github.com/googleapis/google-cloud-java/issues/9467))
([0123f56](https://redirect.github.com/googleapis/google-cloud-java/commit/0123f56bbc025baac61b2e220f28db29a688c29c))
- \[webrisk] add SubmitUri endpoint
([#&googleapis#8203;9443](https://redirect.github.com/googleapis/google-cloud-java/issues/9443))
([dd5ddba](https://redirect.github.com/googleapis/google-cloud-java/commit/dd5ddbaa668f90cd6698ffd0accfde1168f64b6d))
- \[workstations] add output field for the control plane IP address
([#&googleapis#8203;9430](https://redirect.github.com/googleapis/google-cloud-java/issues/9430))
([3cba89a](https://redirect.github.com/googleapis/google-cloud-java/commit/3cba89a945b5b5d85c5690bb500d078c351e90a1))
- add auditd support
([3cba89a](https://redirect.github.com/googleapis/google-cloud-java/commit/3cba89a945b5b5d85c5690bb500d078c351e90a1))
- add output field for the number of pooled instances
([3cba89a](https://redirect.github.com/googleapis/google-cloud-java/commit/3cba89a945b5b5d85c5690bb500d078c351e90a1))
- add scheduling\_policy IN\_ORDER enum to support sequential task
executions
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- add support for accelerators
([3cba89a](https://redirect.github.com/googleapis/google-cloud-java/commit/3cba89a945b5b5d85c5690bb500d078c351e90a1))
- add support for placement policies
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- add support for readiness checks
([3cba89a](https://redirect.github.com/googleapis/google-cloud-java/commit/3cba89a945b5b5d85c5690bb500d078c351e90a1))
- add support for workstation-level environment variables
([3cba89a](https://redirect.github.com/googleapis/google-cloud-java/commit/3cba89a945b5b5d85c5690bb500d078c351e90a1))
- allow users to provide additional labels in search
([7b673de](https://redirect.github.com/googleapis/google-cloud-java/commit/7b673de22a253b4faeb995b46581208343f84abb))
- allow users to provide user info in search
([7b673de](https://redirect.github.com/googleapis/google-cloud-java/commit/7b673de22a253b4faeb995b46581208343f84abb))
- per-Runnable labels
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- per-Runnable labels
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))

##### Bug Fixes

- \[discoveryengine] fix the field name typo for search service
user\_labels
([#&googleapis#8203;9440](https://redirect.github.com/googleapis/google-cloud-java/issues/9440))
([eea5883](https://redirect.github.com/googleapis/google-cloud-java/commit/eea58838dfb351a853e4c639e690051d36456362))
- **deps:** update dependency com.google.cloud:google-cloud-pubsub-bom
to v1.123.12
([#&googleapis#8203;9436](https://redirect.github.com/googleapis/google-cloud-java/issues/9436))
([5df87b6](https://redirect.github.com/googleapis/google-cloud-java/commit/5df87b6be61c2892d07b1963512c15e64ededf27))
- **deps:** update dependency
com.google.cloud:google-cloud-shared-dependencies to v3.10.0
([#&googleapis#8203;9461](https://redirect.github.com/googleapis/google-cloud-java/issues/9461))
([d9fd655](https://redirect.github.com/googleapis/google-cloud-java/commit/d9fd6551394a5e19a7ab6e1c881e9ffc5ec77660))
- **deps:** update dependency
com.google.cloud:google-cloud-shared-dependencies to v3.10.1
([#&googleapis#8203;9468](https://redirect.github.com/googleapis/google-cloud-java/issues/9468))
([75847f7](https://redirect.github.com/googleapis/google-cloud-java/commit/75847f79ee79999fae3813d5189d33eeb7b1ab4a))
- **deps:** update dependency com.google.cloud:google-cloud-storage to
v2.22.2
([#&googleapis#8203;9426](https://redirect.github.com/googleapis/google-cloud-java/issues/9426))
([57a66df](https://redirect.github.com/googleapis/google-cloud-java/commit/57a66dfe16771ef3e995110715b5da5ff2104d9e))

##### Documentation

- \[container] clarified release channel defaulting behavior for create
cluster requests when release channel is unspecified
([#&googleapis#8203;9441](https://redirect.github.com/googleapis/google-cloud-java/issues/9441))
([a9e8b90](https://redirect.github.com/googleapis/google-cloud-java/commit/a9e8b908d37ddede098a102af25587b7de4b2305))
- adjust documentation wording
([3cba89a](https://redirect.github.com/googleapis/google-cloud-java/commit/3cba89a945b5b5d85c5690bb500d078c351e90a1))
- fix `book disk` typo
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- update block\_external\_network field comment to reduce confusion
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- update comments on boot disk fields for clearer usage scope
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- update disk and network field comment for better readability
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))
- Update reservation field API doc
([720796b](https://redirect.github.com/googleapis/google-cloud-java/commit/720796b7e1218b9517a3f2ebcacd3119448e2e9c))

</details>

<details>
<summary>tink-crypto/tink-java (com.google.crypto.tink:tink)</summary>

###
[`v1.23.0`](https://redirect.github.com/tink-crypto/tink-java/releases/tag/v1.23.0):
Tink Java v1.23.0

[Compare
Source](https://redirect.github.com/tink-crypto/tink-java/compare/v1.22.0...v1.23.0)

Tink is a multi-language, cross-platform library that provides simple
and misuse-proof APIs for common cryptographic tasks.

**This is Tink Java 1.23.0.**

The complete list of changes since 1.22.0 can be found
[here](https://redirect.github.com/tink-crypto/tink-java/compare/v1.22.0...v1.23.0).

- Upgraded dependencies:
  - `com.google.protobuf:protobuf-java` -> `4.33.6`
- Upgraded Bazel version to 9.

##### Maven:

```
<dependency>
    <groupId>com.google.crypto.tink</groupId>
    <artifactId>tink</artifactId>
    <version>1.23.0</version>
</dependency>
```

##### Gradle:

```
dependencies {
  implementation 'com.google.crypto.tink:tink-android:1.23.0'
}
```

##### Bazel:

##### Using bzlmod

```
bazel_dep(name = "tink_java")

git_override(
    module_name = "tink_java",
    remote = "https://github.com/tink-crypto/tink-java",
    tag = "v1.23.0",
)
```

</details>

<details>
<summary>googleapis/google-http-java-client
(com.google.http-client:google-http-client)</summary>

###
[`v2.2.0`](https://redirect.github.com/googleapis/google-http-java-client/blob/HEAD/CHANGELOG.md#220-2026-07-20)

[Compare
Source](https://redirect.github.com/googleapis/google-http-java-client/compare/v2.1.1...v2.2.0)

##### Features

- **pqc:** Replace provider-specific PQC TLS setup with generic
SslSocketConfigurator callback
([#&googleapis#8203;2167](https://redirect.github.com/googleapis/google-http-java-client/issues/2167))
([93e1ee7](https://redirect.github.com/googleapis/google-http-java-client/commit/93e1ee7f5e57fd33dde9dfa2f8eab74aca6693c6))

</details>

<details>
<summary>grpc/grpc-java (io.grpc:grpc-bom)</summary>

###
[`v1.83.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.83.0)

[Compare
Source](https://redirect.github.com/grpc/grpc-java/compare/v1.82.2...v1.83.0)

#### gRPC Java 1.83.0 Release Notes

##### API Changes

- api: Turn on RFC 3986 parsing by default and update javadoc.
([`4456721`](https://redirect.github.com/grpc/grpc-java/commit/4456721328))
- api: Add Grpc.newChannelBuilder accepting NameResolverRegistry
([#&googleapis#8203;11901](https://redirect.github.com/grpc/grpc-java/issues/11901))
([`2b86f8f`](https://redirect.github.com/grpc/grpc-java/commit/2b86f8f42f)).
This allows users to explicitly provide a NameResolverRegistry during
channel creation rather than relying on the global registry, offering
better isolation and control over name resolution per-channel.

##### Behavior Changes

- okhttp: enable TLS 1.3 for servers on Android
([`3018ce3`](https://redirect.github.com/grpc/grpc-java/commit/3018ce341c)).
v1.82.0 enabled TLS 1.3 for clients; this does the same for servers
- xds: enable orca to lrs propagation by default
([#&googleapis#8203;12836](https://redirect.github.com/grpc/grpc-java/issues/12836))
([`1e85674`](https://redirect.github.com/grpc/grpc-java/commit/1e85674a40))
Enables xDS configuration to control which fields get propagated from
ORCA backend metric reports to LRS load reports as per gRFC A85
- xds: Use leaf cluster name for backend service label in metrics,
instead of aggregate cluster name
([#&googleapis#8203;12882](https://redirect.github.com/grpc/grpc-java/issues/12882))
([`c8079ee`](https://redirect.github.com/grpc/grpc-java/commit/c8079eed98)).
This only has an effect when using aggregate clusters
- xds: Hold parsed service config in CdsUpdate
([`3db3235`](https://redirect.github.com/grpc/grpc-java/commit/3db3235ebd)).
Previously, modifications to LoadBalancerRegistry could cause failures
in the LB tree
- xds: Revert "xds: reuse connections to the control plane across
channels" added in 1.81.0
([`d49c0b1`](https://redirect.github.com/grpc/grpc-java/commit/d49c0b15d8)).
If using xds heavily with many targets, then MAX\_CONCURRENT\_STREAMS to
the control plane could be exceeded. This then prevents loading
resources for new targets, which causes those channels to hang on name
resolution. RPCs would see the nondescript "DEADLINE\_EXCEEDED: Deadline
Context was exceeded after Xs" or "DEADLINE\_EXCEEDED: Deadline
CallOptions was exceeded after Xs"

##### Improvements

- api: Move attributes to the end of ResolvedAddresses.toString(), for
better legibility
([`103bd4b`](https://redirect.github.com/grpc/grpc-java/commit/103bd4b852))
- core: normalize service config number values
([#&googleapis#8203;12826](https://redirect.github.com/grpc/grpc-java/issues/12826))
([`663c505`](https://redirect.github.com/grpc/grpc-java/commit/663c505dbd))
This updates default service config validation to accept numeric values
represented as Number, not only Double. Common JSON parsers may
deserialize integer-looking JSON values such as maxAttempts: 4 and
backoffMultiplier: 2 as Integer, which previously caused
defaultServiceConfig() to fail with IllegalArgumentException. The values
are normalized to Double when copied into the validated service config,
preserving the existing internal representation expected by the service
config parsing code.
- core: DEADLINE\_EXCEEDED before initial name resolution completes will
now mention “name\_resolver” in the error description
([`56d2b25`](https://redirect.github.com/grpc/grpc-java/commit/56d2b25eb5)).
Previously there was not a hint as to what gRPC was delayed on when the
deadline was exceeded.
- netty: Reduce TcpMetrics log from INFO to FINE
([`4ec83df`](https://redirect.github.com/grpc/grpc-java/commit/4ec83df1eb)).
This removes unnecessary log noise
- core: Enable child channel plugins
([#&googleapis#8203;12578](https://redirect.github.com/grpc/grpc-java/issues/12578))
([`89aef90`](https://redirect.github.com/grpc/grpc-java/commit/89aef90d52)).
This introduces the ChildChannelConfigurer API to allow intercepting and
customizing the configuration (such as injecting interceptors or
modifying credentials) of child channels created dynamically by load
balancers.

##### Dependencies

- Upgrade to Netty 4.2.15
([`66c6ab1`](https://redirect.github.com/grpc/grpc-java/commit/66c6ab1da6)).
If you need Netty 4.1 support, please file an issue
- Upgrade codegen plugin to C++ Protobuf 35.1
([#&googleapis#8203;12876](https://redirect.github.com/grpc/grpc-java/issues/12876))
([`c886f0a`](https://redirect.github.com/grpc/grpc-java/commit/c886f0a06b))
- Upgrade various dependencies
([`064272c`](https://redirect.github.com/grpc/grpc-java/commit/064272c61d)):
  - gson to 2.14.0
  - guava to 33.6.0
  - cel-java to 0.13.0
  - protobuf-java to 3.25.9
  - error-prone-annotations to 2.50.0
  - opentelemetry to 1.63.0

##### Documentation

- Document how to build with Bazel and introduce bazel support for
building android and binder
([#&googleapis#8203;12811](https://redirect.github.com/grpc/grpc-java/issues/12811))
([`f94574e`](https://redirect.github.com/grpc/grpc-java/commit/f94574eff7))

##### Thanks to

tian\_\_mi\_\_mi@\
codingkiddo@\
Zhengcy05@&googleapis#8203;

###
[`v1.82.2`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.82.2)

- Revert "xds: reuse connections to the control plane across channels"
added in 1.81.0
([#&googleapis#8203;12886](https://redirect.github.com/grpc/grpc-java/issues/12886)).
If using xds heavily with many targets, then MAX\_CONCURRENT\_STREAMS to
the control plane could be exceeded. This then prevents loading
resources for new targets, which causes those channels to hang on name
resolution. RPCs would see the nondescript "DEADLINE\_EXCEEDED: Deadline
Context was exceeded after Xs" or "DEADLINE\_EXCEEDED: Deadline
CallOptions was exceeded after Xs"

</details>

<details>
<summary>open-telemetry/semantic-conventions-java
(io.opentelemetry.semconv:opentelemetry-semconv)</summary>

###
[`v1.43.0`](https://redirect.github.com/open-telemetry/semantic-conventions-java/blob/HEAD/CHANGELOG.md#Version-1430-2026-07-08)

[Compare
Source](https://redirect.github.com/open-telemetry/semantic-conventions-java/compare/v1.42.0...v1.43.0)

- Bump to semconv v1.43.0

([#&googleapis#8203;518](https://redirect.github.com/open-telemetry/semantic-conventions-java/pull/518))

</details>

<details>
<summary>open-telemetry/opentelemetry-java
(io.opentelemetry:opentelemetry-bom)</summary>

###
[`v1.64.0`](https://redirect.github.com/open-telemetry/opentelemetry-java/blob/HEAD/CHANGELOG.md#Version-1640-2026-07-10)

##### API

- Fix `W3CBaggagePropagator` to allow empty baggage values per W3C spec

([#&googleapis#8203;8468](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8468))
- Fix baggage parsing for invalid percent-encoded members

([#&googleapis#8203;8480](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8480))

##### Incubating

- **BREAKING** Remove deprecated
`InstrumentationConfigUtil.peerServiceMapping`

([#&googleapis#8203;8542](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8542))
- Fix `EnvironmentGetter`/`EnvironmentSetter` to not enumerate or
normalize carrier entries, and
  normalize empty names consistently

([#&googleapis#8203;8474](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8474),

[#&googleapis#8203;8481](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8481))

##### SDK

##### Traces

- Add `BatchSpanProcessor.create(SpanExporter)` convenience factory to
mirror
  `SimpleSpanProcessor.create(SpanExporter)`

([#&googleapis#8203;8564](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8564))
- Fix `BatchSpanProcessor` benchmark aux counters
(`exportedSpans`/`droppedSpans`) always
  reporting zero

([#&googleapis#8203;8539](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8539))

##### Metrics

- Fix `PooledHashMap` dropping live entries when an entry is removed
during `forEach`

([#&googleapis#8203;8499](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8499))
- Safely initialize exemplar reservoir storage in
`FixedSizeExemplarReservoir`

([#&googleapis#8203;8524](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8524))
- Use `failExceptionally` in `PeriodicMetricReader` when the exporter is
busy

([#&googleapis#8203;8525](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8525))
- Only set `valuesRecorded` in `AggregatorHandle` when false

([#&googleapis#8203;8559](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8559))
- Use `volatile` instead of atomics in
`Double`/`LongLastValueAggregator`

([#&googleapis#8203;8560](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8560))
- Randomize per-thread recording order in metric benchmarks to avoid
concurrency hotspots

([#&googleapis#8203;8550](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8550))

##### Logs

- Fix `BatchLogRecordProcessor` worker thread being killed by
non-runtime exceptions

([#&googleapis#8203;8529](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8529))

##### Exporters

- **BREAKING** Prometheus: Drop deprecated `PrometheusMetricReader`
constructors

([#&googleapis#8203;8541](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8541))
- OTLP: Reject host-less endpoints in `EndpointUtil.validateEndpoint`

([#&googleapis#8203;8489](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8489))
- OTLP: Replace Jackson OTLP JSON serialization with a hand-rolled
implementation

([#&googleapis#8203;8545](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8545))
- OTLP Profiles: Fix `OtlpGrpcProfileExporter` `toString` class name

([#&googleapis#8203;8492](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8492))
- Prometheus: Add translation strategy support

([#&googleapis#8203;8346](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8346))
- Prometheus: Fix serialization of array-valued scope and resource
attributes to JSON strings

([#&googleapis#8203;8497](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8497))

##### Extensions

- **BREAKING** Declarative config: Move experimental types to internal
package

([#&googleapis#8203;8530](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8530))
- Declarative config: Commit generated schema POJOs to git

([#&googleapis#8203;8408](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8408))
- Declarative config: Update to `opentelemetry-configuration` v1.1.0

([#&googleapis#8203;8451](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8451))
- Declarative config: Adjust POJO `toString`/`hashCode`/`equals` to
match AutoValue semantics

([#&googleapis#8203;8526](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8526))
- Declarative config: Add ref descriptions to generated model classes

([#&googleapis#8203;8540](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8540))
- Declarative config: Emit consistent `@JsonProperty` annotations on
generated models

([#&googleapis#8203;8563](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8563))
- Declarative config: Remove duplicate resolver in
`DeclarativeConfigPropertyUtil`

([#&googleapis#8203;8579](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8579))

##### Project tooling

- Add configuration policy guidance

([#&googleapis#8203;8429](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8429))
- Exclude certain GitHub Actions from running on forks

([#&googleapis#8203;8466](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8466))
- Add guidance to prefer parameterized tests

([#&googleapis#8203;8469](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8469))
- Make benchmark path configurable

([#&googleapis#8203;8557](https://redirect.github.com/open-telemetry/opentelemetry-java/pull/8557))

</details>

<details>
<summary>google/conscrypt
(org.conscrypt:conscrypt-openjdk-uber)</summary>

###
[`v2.6.1`](https://redirect.github.com/google/conscrypt/releases/tag/2.6.1)

[Compare
Source](https://redirect.github.com/google/conscrypt/compare/2.6.0...2.6.1)

- Fixes
[#&googleapis#8203;1519](https://redirect.github.com/google/conscrypt/issues/1519)
- Fixes [#&googleapis#8203;1499
(comment)](https://redirect.github.com/google/conscrypt/issues/1499#issuecomment-4923001123)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/googleapis/google-cloud-java).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI3NS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
…generation (googleapis#13795)

This PR updates the release note generation tool to:
1. Handle missing release tags gracefully by dynamically appending
library suffixes (e.g. `v1.88.1-dataproc`) for partial releases to avoid
broken links.
2. Fix process stdout buffer blocking and deadlock/timeout hang risks
during command execution.

Tested manually with `-Dlibraries-bom.version=26.85.1
-Dgoogle-cloud-java.version=1.88.1` (verified correct tag fallback
output in release_note.md).

Fixes b/535634855
### Summary
This PR migrates the GAX (`sdk-platform-java/gax-java`) library to use
JSpecify 1.0.0 nullability annotations (`@NullMarked` and `@Nullable`),
replacing the previous `javax.annotation` references.

### Key Changes

 **JSpecify 1.0.0 Annotation Adoption in GAX:**
- Applied `@NullMarked` at the class and package levels across GAX core
classes to define non-null by default semantics.
- Replaced imports of `javax.annotation.Nullable` with
`org.jspecify.annotations.Nullable`.
- Adopted type-use nullability declarations for generic parameters,
arrays, and API settings (e.g. `java.time.@nullable Duration`,
`List<@nullable T>`).

### Verification Results
-
https://docs.google.com/document/d/1nnlGdlKmvpDmH5U_wGEFpePGee9LYeRld7tI3g0L8qQ/edit?resourcekey=0-ebWO6NJdcB6Q7uYasPXcPw&tab=t.0
whowes and others added 9 commits July 24, 2026 12:39
…leapis#13833)

Allow checksum on appendable upload finalization

---------

Co-authored-by: Dhriti Chopra <dhritichopra@google.com>
## Summary
This PR migrates the Google Auth Library for Java
(`google-auth-library-java`) to use JSpecify 1.0.0 nullability
annotations (`@NullMarked` and `@Nullable`), replacing the previous
`javax.annotation` references.

## Key Changes

### JSpecify 1.0.0 Annotation Adoption in Auth:
- **NullMarked Semantics**: Applied `@NullMarked` at the class and
package levels across core auth classes (in `credentials`,
`oauth2_http`, `appengine`, and `cab-token-generator` modules) to define
non-null by default semantics.
- **Annotation Replacement**: Replaced imports of
`javax.annotation.Nullable` with `org.jspecify.annotations.Nullable`.
- **Dependency Management**: Updated Maven `pom.xml` files and Bazel
`BUILD.bazel` configurations to declare and manage the
`org.jspecify:jspecify` dependency.

## Verification Results
-
https://docs.google.com/document/d/1YSg2toS7wXT6gC8whKAxx71_BFkfPVOX8a3s2OlZ25E/edit?resourcekey=0-g0wyO_jvBgHigUg6Pjo1CA&tab=t.pv38dpfp09db
… classes (googleapis#13769)

This PR continues the onboarding of the gapic-generator-java project to
JSpecify null-safety. Specifically, it applies the @NullMarked
annotation to all modified source and test classes in this branch to
declare them non-null by default.

**Annotations Applied**
- @NullMarked Class Declarations: Applied at the class level to all
modified source and test classes to establish a non-null by default
context.
- @nullable Type Annotations: Applied to specific methods, fields, and
parameters to explicitly denote where null values are accepted/returned.

**Automation Method**
To apply the class-level annotations efficiently, we leveraged Chris's
Error Prone automation tool (custom BugChecker plugin under
com.google.errorprone.bugpatterns.nullness) to run AST-based refactoring
and automatically insert the JSpecify @NullMarked annotations across the
codebase.

Verification/Testing
- Please refer to this doc:
https://docs.google.com/document/d/18c7NzbTpREqqb_qvLUZ1bCaMYGQQnczyo6vrVPmx60Q/edit?resourcekey=0-EOZQxK66NvVhJPF1jg-LQA&tab=t.0
Librarian version upgrade and the `generate --all` command:

```
$ go run github.com/googleapis/librarian/cmd/librarian@v0.29.1 generate --all
```

This didn't generate any diff.
…eapis#13883)

Removes legacy `owlbot.py` scripts from `java-apigee-registry`,
`java-dns`, and `java-notification`. These libraries are absent from
`librarian.yaml`, rendering the scripts completely unused and safe to
delete.

Fixes googleapis/librarian#7001
…TING

A session that received a server GO_AWAY (or was force-closed) while still
STARTING transitions STARTING -> CLOSING -> WAIT_SERVER_CLOSE and closes with
prevState == WAIT_SERVER_CLOSE. The only failure-side budget release in
onSessionClose lived inside the abnormal-close branch
(if prevState != WAIT_SERVER_CLOSE), guarded by prevState == STARTING, so that
path was skipped and the reserved concurrency slot leaked permanently. Over time
this exhausts the session-creation budget even at very low QPS.

Track each reservation on the SessionHandle and release it exactly once: as a
success when the session reaches READY (onSessionReady), or as a failure when it
terminates without ever becoming READY (onSessionClose), before the pool-state
and abnormal-close gates. Keying off the reservation instead of the close-time
prevState makes the release exactly-once and also covers the latent leak where
onSessionReady early-returns (poolState != STARTED) without releasing.

Adds a regression test that drives a session receiving a GO_AWAY before the open
handshake, backed by a new go_away_before_open fake-proto field and matching
SessionHandler branch. The test fails without the fix and passes with it.
@mutianf
mutianf force-pushed the fix/session-budget-goaway-leak branch from 48a2217 to 2e2cd0b Compare July 24, 2026 16:40
@mutianf
mutianf requested review from a team as code owners July 24, 2026 16:40
@snippet-bot

snippet-bot Bot commented Jul 24, 2026

Copy link
Copy Markdown

Here is the summary of changes.

You are about to add 725 region tags.

This comment is generated by snippet-bot.
If you find problems with this result, please file an issue at:
https://github.com/googleapis/repo-automation-bots/issues.
To update this comment, add snippet-bot:force-run label or use the checkbox below:

  • Refresh this comment

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.