fix(bigtable): release session-creation budget on GO_AWAY during STAR…#13887
fix(bigtable): release session-creation budget on GO_AWAY during STAR…#13887mutianf wants to merge 35 commits into
Conversation
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.
There was a problem hiding this comment.
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.
| long deadlineMs = System.currentTimeMillis() + 5_000; | ||
| while (System.currentTimeMillis() < deadlineMs) { |
There was a problem hiding this comment.
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.
| long deadlineMs = System.currentTimeMillis() + 5_000; | |
| while (System.currentTimeMillis() < deadlineMs) { | |
| long deadlineNs = System.nanoTime() + 5_000_000_000L; | |
| while (System.nanoTime() < deadlineNs) { |
…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.
…er` connection properties (googleapis#13858)
…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 "21" 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` |  |  | | [com.google.auth:google-auth-library-bom](https://redirect.github.com/googleapis/java-shared-config) | `1.48.0` → `1.49.0` |  |  | | [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` |  |  | | [com.google.crypto.tink:tink](https://redirect.github.com/tink-crypto/tink-java) | `1.22.0` → `1.23.0` |  |  | | [com.google.http-client:google-http-client](https://redirect.github.com/googleapis/google-http-java-client) | `2.1.1` → `2.2.0` |  |  | | [io.grpc:grpc-bom](https://redirect.github.com/grpc/grpc-java) | `1.82.1` → `1.83.0` |  |  | | [io.opentelemetry.semconv:opentelemetry-semconv](https://redirect.github.com/open-telemetry/semantic-conventions-java) | `1.42.0` → `1.43.0` |  |  | | [io.opentelemetry:opentelemetry-bom](https://redirect.github.com/open-telemetry/opentelemetry-java) | `1.63.0` → `1.64.0` |  |  | | [org.apache.httpcomponents.client5:httpclient5](https://hc.apache.org/) ([source](https://redirect.github.com/apache/httpcomponents-client)) | `5.6.1` → `5.6.2` |  |  | | [org.conscrypt:conscrypt-openjdk-uber](https://conscrypt.org/) ([source](https://redirect.github.com/google/conscrypt)) | `2.6.0` → `2.6.1` |  |  | --- > [!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
…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.
48a2217 to
2e2cd0b
Compare
…TING