Skip to content

Comments

Migrate sdk platform java#11961

Draft
chingor13 wants to merge 6471 commits intomainfrom
migrate-sdk-platform-java
Draft

Migrate sdk platform java#11961
chingor13 wants to merge 6471 commits intomainfrom
migrate-sdk-platform-java

Conversation

@chingor13
Copy link
Contributor

No description provided.

diegomarquezp and others added 30 commits March 20, 2025 10:53
…g property (#3711)

This ties the google-java-format.jar version to the one [declared in
java-shared-config](https://github.com/googleapis/java-shared-config/blob/a315cf154ffb2dfd77ff7ce9892f8bb8a40ec7cc/java-shared-config/pom.xml#L31)

The purpose is to later upgrade this version to avoid the old Guava
dependency.

I moved the download step to ggj-build so the final image only copies
artifacts from "build related" stages.

---------

Co-authored-by: Tomo Suzuki <suztomo@gmail.com>
Follow up from googleapis/sdk-platform-java#3674
Context: Some local changes were not pushed to that PR before it was
merged.
Main changes: 
 - include `src/test/.../native-image.properties` in testlib jar
- include java-storage-nio related classes for initialization at build
time
In this PR:
- Remove the logging module per go/debug-logging-proposal.
…nfig update (#3726)

[Context
Doc](https://docs.google.com/document/d/1Fqb4lXZ0FEpkJoSUvUp7Ow-z0fdcLyLE30lDDsGaRY0/edit?resourcekey=0-IueNnA7qMxmyWH6bGE9bsw&tab=t.0#heading=h.pi1uh78box27)

This replaces googleapis/sdk-platform-java#3724
in order to manually prepare the repo for this update. The preparation
includes:
 - Update google-cloud-shared-config to `1.15.1`.
- Configure pom.xml files to reference the `fmt` plugin using the
`com.spotify.fmt` groupId instead of `com.coveo`. The group ID in [since
2022](https://github.com/spotify/fmt-maven-plugin/blame/main/README.md#L7).
Some pom.xml explicitly referenced the `2.9.1` version, but I removed it
so it's [controlled by
google-cloud-shared-config](https://github.com/googleapis/java-shared-config/blob/bc8f22d02511c0467271698acf340874ed987160/java-shared-config/pom.xml#L172-L174).
- Update our `ci.yaml` to either run the `mvn` tasks using java 17 or
running the task with the `-Dfmt.skip` flag.
 - Update `java_compatibility_check.yaml` from java 11 to java 17.
 - Update our docker image to use java 17 instead of 11.
- Format the codebase using `mvn fmt:format` (see
googleapis/sdk-platform-java@36d9ee4
for format changes).


### Review instructions
You will see that the checks are failing because I did not include file
formatting in the latest commit of this PR for the sake of browser
performance. However, I ran the checks in
googleapis/sdk-platform-java@36d9ee4
with formatted files and they were all green except for the integration
test, which is failing because I haven't updated the golden branch (see
[this branch
comparison](chore/test-hermetic-build...chore/test-hermetic-build-update-sharedconfig-and-lint)
for upcoming changes), which I plan to do before merging this PR.

#### Before merging:
 - [x] Update golden branch
 - [x] Restore hermetic_library_generation workflow
 - [x] Restore formatted java files

---------

Co-authored-by: Mend Renovate <bot@renovateapp.com>
Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>
b/406556155

---------

Co-authored-by: Min Zhu <zhumin@google.com>
…i/majorversion (#3712)

This change allow generator to generate for a specified api-path. When
"--api-path" is not specified, fallback to "--library-names", and
__behavior for existing command usages should not change__.

For now, api-path should only take in path to api/version, e.g.
google/cloud/functions/v2
…neration (#3723)

Part of the fix for
googleapis/sdk-platform-java#3701 ☕

### Approach
The templates come from
https://github.com/googleapis/synthtool/tree/bf182cd41d9a7de56092cafcc7befe6b398332f6.
The only update was to include `generated-files-bot`, which is already
up to date in all the HW repos.

The `.kokoro` folder will be a separate follow up task. We will now
focus on solving the update of `update_generation_config` `yaml` and
`sh` files.

The fix to include the `.github` folder follows from
https://setuptools.pypa.io/en/latest/userguide/datafiles.html:
```
Glob patterns do not automatically match dotfiles, i.e., directory or file names starting with a dot (.).
To include such files, you must explicitly start the pattern with a dot, e.g. .* to match .gitignore.
```


Interestingly, this is also the reason `cp
synthool/gcp/templates/java_library/* ...` did not bring folders
starting with dot (such as .kokoro) into
googleapis/sdk-platform-java#2884
### Confirming effects in downstream repos
Demos show the results as of
googleapis/sdk-platform-java@b66af92
in
 - googleapis/java-storage#3012
 - googleapis/java-logging#1787
 - googleapis/java-pubsub#2384
 - googleapis/java-bigtable#2546
 - googleapis/java-spanner#3711
 - googleapis/java-firestore#2065
 - googleapis/java-datastore#1810
 - googleapis/java-bigquerystorage#2929
 - googleapis/java-pubsublite#1837

There were no regressions on templated files that were manually
modified.
Full context in [GraalVM 17 migration
doc](https://docs.google.com/document/d/1bOeGtVFLsq5ts71If5pFXCvHIeNpbtBRvF6XQfavLZs/edit?tab=t.loipy7ydvwga)

Confirmation that this works:
googleapis/java-shared-config@9530494

### Problem
JDK 17 `InputStreamReader` produces different bytes from JDK 18+. This
affects `ITHttpAnnotation#testComplianceGroup` because of the way
`compliance_suite.json` is parsed.

### Cause
JDK 18 was released including commit
[7fc854](openjdk/jdk@7fc8540)
which enables usage of UTF-8 by default. Before this commit, each JVM
will produce their own default Charset (_likely the reason we don't see
this error in other CI setups using java 17_). As a confirmation, if we
create an experiment test to print the default charset as in:

```java
 @test
  void verifyByteSizeOfExtremePayload() throws IOException {
    System.out.println(System.getProperty("file.encoding"));
}
```

When using openjdk 17 we get the value `Cp1252`, and on openjdk 18 we
get the value `UTF-8`.
Solution

### Solution
Finally, the solution is to explicitly use UTF-8 with the
`InputStreamReader`
…image` (#3732)

This marks the images as infrastructure-related and will not apply for
the customer-facing VM scanning tools. Context in b/395190324 and
[internal
g3doc](https://g3doc.corp.google.com/security/g3doc/isa/autovm/vmprograms/public_image_scanning.md?cl=head#common_vocab)
Context: [we will introduce a new GraalVM
job](https://docs.google.com/document/d/1bOeGtVFLsq5ts71If5pFXCvHIeNpbtBRvF6XQfavLZs/edit?tab=t.dcjxhf429j6t#bookmark=id.3s7d4dj247hr)
and will leverage the hermetic build templates to propagate this change
to some of the repositories. Each PR will be followed with ad-hoc
changes such as sync-repo-settings (the cannot be templated).

Demo PRs
 * googleapis/java-bigtable#2558
 * googleapis/java-bigquerystorage#2937
 * googleapis/java-storage#3029
 * googleapis/java-datastore#1816
* There are manual changes in `build.sh`. We will add this file to the
[ignored files in
owlbot.py](https://github.com/googleapis/java-datastore/blob/8ceb62b5182e30b4f771d6c1b586a22fb084c9ac/owlbot.py#L48-L57)
and will raise an issue to move this logic elsewhere (if feasible).
 * googleapis/java-firestore#2074
 * googleapis/java-logging#1789
 * googleapis/java-pubsub#2389
 * googleapis/java-pubsublite#1839
 * googleapis/java-spanner#3821
…onfig to v1.15.4 (#3742)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[com.google.cloud:google-cloud-shared-config](https://redirect.github.com/googleapis/java-shared-config)
| `1.15.1` -> `1.15.4` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-shared-config/1.15.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-shared-config/1.15.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-shared-config/1.15.1/1.15.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-shared-config/1.15.1/1.15.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>googleapis/java-shared-config
(com.google.cloud:google-cloud-shared-config)</summary>

###
[`v1.15.4`](https://redirect.github.com/googleapis/java-shared-config/blob/HEAD/CHANGELOG.md#1154-2025-04-15)

[Compare
Source](https://redirect.github.com/googleapis/java-shared-config/compare/v1.15.1...v1.15.4)

##### Bug Fixes

- Use recommended variable expansion syntax
([#&#8203;1016](https://redirect.github.com/googleapis/java-shared-config/issues/1016))
([6ff6dc4](https://redirect.github.com/googleapis/java-shared-config/commit/6ff6dc48b8d92604164da7c68e268476b5a16578))

</details>

---

### Configuration

📅 **Schedule**: 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.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- 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/sdk-platform-java).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
To be merged after cl/747626774

[context
doc](https://docs.google.com/document/d/1bOeGtVFLsq5ts71If5pFXCvHIeNpbtBRvF6XQfavLZs/edit?tab=t.dcjxhf429j6t)

TL;DR: we are introducing testing infra for GraalVM for JDK 17
## Implement Selective GAPIC Generation (Phase II)

This PR implements Phase II of selective GAPIC generation within the
`gapic-generator-java` project. This allows for finer control over the
intended usage of generated client methods (public, internal, or hidden)
by providing selective gapic generation configuration in service yaml.

### Key Changes:

#### 1. Model Updates
* Added a `isInternalApi` attribute to the internal representation of
methods to track their intended visibility (e.g., public, internal).

#### 2. Parser Logic
* Introduced the `getMethodSelectiveGapicType()` method responsible for
parsing the selective generation configuration for each method.
* Modified service filtering logic: Service classes will not be
generated if the service definition contains no methods or includes only
methods marked as **`HIDDEN`**.
* Enhanced `parseService()` to determine and assign the appropriate
`SelectiveGapicType` to each service method and its corresponding
generated variants (e.g., overloaded methods).

#### 3. Composer (Code Generation) Updates
* **Method Annotations:** For all method variants designated as
`INTERNAL`, generate an `@InternalApi` annotation accompanied by a
warning message discouraging external use.
* **Method Header Comments:** For methods marked as `INTERNAL`, generate
a specific comment in the method's header indicating its intended
internal-only usage.
* **Sample Generation:** Adjusted the logic for generating
`package-info.java` samples to prevent the usage of any methods marked
as `INTERNAL`.

#### 4. Tests
* Added **unit tests** covering the new parser logic and comment
generation changes related to selective generation types.
* Added/updated **golden unit/integration tests** to verify the correct
code output for various selective generation scenarios, including
services with:
    * All public methods.
    * A mix of public, `INTERNAL`, and/or `HIDDEN` methods.
* No public methods (verifying that the service class is not generated).
Error:
```
Error: Exception in thread "main" java.lang.UnsupportedClassVersionError: com/google/cloud/datastore/emulator/CloudDatastore has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
```

This error seemed to show up ~3 weeks ago, but it doesn't look like
anything changed in java-datastore. Cloud Datastore Emulator seems to
have required JRE 11 since ~late 2022. We have been compiling with JDK
11 and running with Java 8.

Successful run:
https://github.com/googleapis/sdk-platform-java/actions/runs/14522553161
`Empty commit messages, skip creating pull request description.`

Fixes googleapis/sdk-platform-java#3745

---------

Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>
🤖 I have created a release *beep* *boop*
---


<details><summary>2.56.0</summary>

##
[2.56.0](googleapis/sdk-platform-java@v2.55.1...v2.56.0)
(2025-04-18)


### Features

* Selective gapic generation phase II
([#3730](googleapis/sdk-platform-java#3730))
([64ac2c1](googleapis/sdk-platform-java@64ac2c1))


### Bug Fixes

* **hermetic-build:** use correct image name in templated graalvm jobs
([#3743](googleapis/sdk-platform-java#3743))
([29a78d3](googleapis/sdk-platform-java@29a78d3))
* plumb mtls endpoint to TransportChannelProvider
([#3673](googleapis/sdk-platform-java#3673))
([a961459](googleapis/sdk-platform-java@a961459))


### Dependencies

* add opentelemetry gcp-resources to shared deps
([#3722](googleapis/sdk-platform-java#3722))
([b1b075d](googleapis/sdk-platform-java@b1b075d))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Additionally: we use cloud-java-bot to create the flakiness issues.
Prepares downstream repos for the linter upgrade from java-shared-config
(googleapis/java-shared-config#1003)
Fixes error from
https://fusion2.corp.google.com/invocations/e3010c7e-ee63-4a12-ae04-e2dae7766bbe/targets/cloud-devrel%2Fclient-libraries%2Fjava%2Fjava-storage%2Fpresubmit%2Fgraalvm-native-a/log

This is due to the name of the jobs not matching what was submitted in
cl/750211040

```
[09:45:52 PDT] Job config validated!
[09:45:52 PDT] Resolving Github Scm Revision State
[09:45:56 PDT] Running git -c core.hooksPath=/dev/null clone https://github.com/googleapis/java-storage.git /tmp/workspace/workspace/src/github/java-storage
[09:45:57 PDT] Fetching GitHub java-storage@PR#3050.  This code is considered not submitted as it's coming from a pull request.
[09:45:57 PDT] Running git -c core.hooksPath=/dev/null fetch origin pull/3050/merge:pull_branch
[09:45:58 PDT] Running git -c core.hooksPath=/dev/null checkout pull_branch --
[09:45:58 PDT] Running git -c core.hooksPath=/dev/null rev-parse --verify HEAD
[09:45:58 PDT][ERROR] Build failed due to an error
com.google.devtools.kokoro.controller.UserException: An error happened while reading and parsing the build config
	at com.google.devtools.kokoro.jenkins.plugin.executor.BuilderStepsProvider.provide(BuilderStepsProvider.java:55)
	at com.google.devtools.kokoro.controller.build.PipelineBuildExecutor.runPipeline(PipelineBuildExecutor.java:92)
	at com.google.devtools.kokoro.controller.build.PipelineBuildExecutor.lambda$start$0(PipelineBuildExecutor.java:67)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: com.google.devtools.kokoro.controller.UserException: APPLICATION_ERROR;devtools.kokoro.executor.proto/KokoroExecutorWorker.ReadBuildConfig;no file found at path 'src/github/java-storage/.kokoro/presubmit/graalvm-native-a' or with allowed extensions invalid argument;AppErrorCode=3;StartTimeMs=1745340358647;tcp;Deadline(sec)=300.0;ResFormat=uncompressed;interceptors={[com.google.frameworks.debug.sherlog.core.rpcutil.Stubby3ClientInterceptor];overrides={}};ServerTimeSec=5.21036E-4;LogBytes=256;FailFast;EffSecLevel=none;ReqFormat=uncompressed;ReqID=3534e3e8629380d4;GlobalID=0;Server=[2002:a4f:c6c1:0:b0:422:a3e6:c419]:14001
	at com.google.devtools.kokoro.jenkins.shared.worker.ExecutorHelperClient.mapRpcException(ExecutorHelperClient.java:638)
	at com.google.devtools.kokoro.jenkins.shared.worker.ExecutorHelperClient.readBuildConfig(ExecutorHelperClient.java:529)
	at com.google.devtools.kokoro.jenkins.plugin.kokorojob.store.ConfigStore.getKokoroBuildConfigFromScm(ConfigStore.java:124)
	at com.google.devtools.kokoro.jenkins.plugin.kokorojob.store.ConfigStore.getKokoroBuildConfig(ConfigStore.java:93)
	at com.google.devtools.kokoro.jenkins.plugin.executor.BuilderStepsProvider.provide(BuilderStepsProvider.java:45)
	... 6 more
```
🤖 I have created a release *beep* *boop*
---


<details><summary>2.56.1-SNAPSHOT</summary>

### Updating meta-information for bleeding-edge SNAPSHOT release.
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Diego Marquez <diegomarquezp@google.com>
🤖 I have created a release *beep* *boop*
---


<details><summary>2.56.1</summary>

##
[2.56.1](googleapis/sdk-platform-java@v2.56.0...v2.56.1)
(2025-04-23)


### Bug Fixes

* match graalvm job names with internal configs
([#3755](googleapis/sdk-platform-java#3755))
([23b4b12](googleapis/sdk-platform-java@23b4b12))
* use java 17 in samples.yaml
([#3754](googleapis/sdk-platform-java#3754))
([2d5c5e2](googleapis/sdk-platform-java@2d5c5e2))
* use spotify formatter in hermetic build templates
([#3752](googleapis/sdk-platform-java#3752))
([65e29da](googleapis/sdk-platform-java@65e29da))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Diego Alonso Marquez Palacios <diegomarquezp@google.com>
This ensures the templates are up to date with the latest released
version of sdk-platform-java-config
🤖 I have created a release *beep* *boop*
---


<details><summary>2.56.2-SNAPSHOT</summary>

### Updating meta-information for bleeding-edge SNAPSHOT release.
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Diego Marquez <diegomarquezp@google.com>
🤖 I have created a release *beep* *boop*
---


<details><summary>2.56.2</summary>

##
[2.56.2](googleapis/sdk-platform-java@v2.56.1...v2.56.2)
(2025-04-23)


### Bug Fixes

* inline version update in kokoro templates
([#3762](googleapis/sdk-platform-java#3762))
([050aeab](googleapis/sdk-platform-java@050aeab))
* keep native image templates up to date
([#3759](googleapis/sdk-platform-java#3759))
([7dffab1](googleapis/sdk-platform-java@7dffab1))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
blakeli0 and others added 30 commits January 22, 2026 12:28
Protobuf-java
[v4.33.x](https://github.com/protocolbuffers/protobuf/releases/tag/v33.0)
restored gen code compatibility to 3.0.0. Upgrade protobuf runtime and
gen code to 4.33.x should have minimum risks now. See

[go/cloud-java:protobuf-4.x-upgrade](http://goto.google.com/cloud-java:protobuf-4.x-upgrade)
for details.

---------

Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>
Co-authored-by: Diego Marquez <diegomarquezp@google.com>
chore: update googleapis commit at Wed Jan 21 02:42:16 UTC 2026
…y tensorflow (#4082)

Add protobuf 3.x compatibility tests with a third party library
tensorflow in showcase module.

Tensorflow depends on [protobuf-java

v3.21.9](https://github.com/tensorflow/java/blob/cbf942051d55291ba9bdb019b2f207f013889bba/tensorflow-core/pom.xml#L45)
gen code and runtime. This proves that client libraries with 4.33
runtime and gen code are compatible with a third party library that
contains 3.x gen code and runtime.

Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[com.google.auth:google-auth-library-bom](https://togithub.com/googleapis/google-auth-library-java)
| minor | `1.41.0` -> `1.42.0` |
|
[com.google.http-client:google-http-client](https://togithub.com/googleapis/google-http-java-client)
| minor | `2.0.3` -> `2.1.0` |
| [io.grpc:grpc-bom](https://togithub.com/grpc/grpc-java) | minor |
`1.76.2` -> `1.78.0` |

---

### Release Notes

<details>
<summary>googleapis/google-auth-library-java
(com.google.auth:google-auth-library-bom)</summary>

###
[`v1.42.0`](https://togithub.com/googleapis/google-auth-library-java/blob/HEAD/CHANGELOG.md#1420-2026-01-23)

[Compare
Source](https://togithub.com/googleapis/google-auth-library-java/compare/v1.41.0...v1.42.0)

##### Features

- Update protobuf version to 4.33.2
([#&#8203;1875](https://togithub.com/googleapis/google-auth-library-java/issues/1875))
([13ddbd1](https://togithub.com/googleapis/google-auth-library-java/commit/13ddbd1744fb908fb51e8866e5aac291f0e9bada))

##### Bug Fixes

- Simplify call to directly retrieve the default service account from
MDS
([#&#8203;1844](https://togithub.com/googleapis/google-auth-library-java/issues/1844))
([6efda0b](https://togithub.com/googleapis/google-auth-library-java/commit/6efda0bc2063b1d1b30de43785d08ec86da1791c))

</details>

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

###
[`v2.1.0`](https://togithub.com/googleapis/google-http-java-client/blob/HEAD/CHANGELOG.md#210-2026-01-23)

[Compare
Source](https://togithub.com/googleapis/google-http-java-client/compare/v2.0.3...v2.1.0)

##### Features

- Update protobuf-java to 4.33.2
([d48c443](https://togithub.com/googleapis/google-http-java-client/commit/d48c443cf9b872be4872ed6801c4edf70d5be7ac))

</details>

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

###
[`v1.78.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.78.0)

[Compare
Source](https://togithub.com/grpc/grpc-java/compare/v1.77.1...v1.78.0)

##### Bug Fixes

- core: Fix shutdown failing accepted RPCs during channel startup
([`02e98a8`](https://togithub.com/grpc/grpc-java/commit/02e98a806)).
This fixes a race where RPCs could fail with "UNAVAILABLE: Channel
shutdown invoked" even though they were created before
channel.shutdown()
- okhttp: Fix race condition overwriting MAX_CONCURRENT_STREAMS
([#&#8203;12548](https://togithub.com/grpc/grpc-java/issues/12548))
([`8d49dc1`](https://togithub.com/grpc/grpc-java/commit/8d49dc1c9))
- binder: Stop leaking `this` from BinderServerTransport's ctor
([#&#8203;12453](https://togithub.com/grpc/grpc-java/issues/12453))
([`89d77e0`](https://togithub.com/grpc/grpc-java/commit/89d77e062))
- rls: Avoid missed config update from reentrancy
([`55ae1d0`](https://togithub.com/grpc/grpc-java/commit/55ae1d054)).
This fixes a regression since 1.75.0 triggered by CdsLb being converted
to XdsDepManager. Without this fix, a second channel to the same target
may hang when starting, causing DEADLINE_EXCEEDED, and unhang when the
control plane delivers an update (e.g., endpoint address update)

##### Improvements

- xds: gRFC A88 - Changes to XdsClient Watcher APIs
([#&#8203;12446](https://togithub.com/grpc/grpc-java/issues/12446))
([`f385add`](https://togithub.com/grpc/grpc-java/commit/f385add31)). We
now have improved xDS error handling and this provides a clearer
mechanism for the xDS server to report per-resource errors to the
client, resulting in better error messages for debugging and faster
detection of non-existent resources. This also improves the handling of
all xDS-related data errors and the behavior of the xDS resource timer.
- rls: Control plane channel monitor state and back off handling
([#&#8203;12460](https://togithub.com/grpc/grpc-java/issues/12460))
([`26c1c13`](https://togithub.com/grpc/grpc-java/commit/26c1c1341)).
Resets RLS request backoff timers when the Control plane channel state
transitions to READY. Also when the backoff timer expires, instead of
making a RLS request immediately, it just causes a picker update to
allow making rpc again to the RLS target.
- core: simplify DnsNameResolver.resolveAddresses()
([`4843256`](https://togithub.com/grpc/grpc-java/commit/4843256af))
- netty: Run handshakeCompleteRunnable in success cases
([`283f103`](https://togithub.com/grpc/grpc-java/commit/283f1031f))
- api,netty: Add custom header support for HTTP CONNECT proxy
([`bbc0aa3`](https://togithub.com/grpc/grpc-java/commit/bbc0aa369))
- binder: Pre-factor out the guts of the BinderClientTransport
handshake.
([`9313e87`](https://togithub.com/grpc/grpc-java/commit/9313e87df))
- compiler: Add RISC-V 64-bit architecture support to compiler build
configuration
([`725ab22`](https://togithub.com/grpc/grpc-java/commit/725ab22f3))
- core: Release lock before closing shared resource
([`cb73f21`](https://togithub.com/grpc/grpc-java/commit/cb73f217e)).
Shared resources are internal to gRPC for sharing expensive objects
across channels and servers, like threads. This reduces the chances of
forming a deadlock, like seen with s2a in
[`d50098f`](https://togithub.com/grpc/grpc-java/commit/d50098f)
- Upgrade gson to 2.12.1
([`6dab2ce`](https://togithub.com/grpc/grpc-java/commit/6dab2ceab))
- Upgrade dependencies
([`f36defa`](https://togithub.com/grpc/grpc-java/commit/f36defa2d)).
proto-google-common-protos to 2.63.1, google-auth-library to 1.40.0,
error-prone annotations to 2.44.0, guava to 33.5.0-android,
opentelemetry to 1.56.0
- compiler: Update maximum supported protobuf edition to EDITION\_2024
([`2f64092`](https://togithub.com/grpc/grpc-java/commit/2f64092b8))
- binder: Introduce server authorization strategy v2
([`d971072`](https://togithub.com/grpc/grpc-java/commit/d9710725d)).
Adds support for `android:isolatedProcess` Services and moves all
security checks to the handshake, making subsequent transactions more
efficient.

##### New Features

- compiler: Upgrade to C++ protobuf 33.1
([#&#8203;12534](https://togithub.com/grpc/grpc-java/issues/12534))
([`58ae5f8`](https://togithub.com/grpc/grpc-java/commit/58ae5f808)).
- util: Add gRFC A68 random subsetting LB
([`48a4288`](https://togithub.com/grpc/grpc-java/commit/48a42889d)). The
policy uses the name `random_subsetting_experimental`. If it is working
for you, tell us so we can gauge marking it stable. While the xDS
portions haven’t yet landed, it is possible to use with xDS with
JSON-style Structs as supported by gRFC A52
- xds: Support for System Root Certs
([#&#8203;12499](https://togithub.com/grpc/grpc-java/issues/12499))
([`51611ba`](https://togithub.com/grpc/grpc-java/commit/51611bad1)).
Most service mesh workloads use mTLS, as described in gRFC A29. However,
there are cases where it is useful for applications to use normal TLS
rather than using certificates for workload identity, such as when a
mesh wants to move some workloads behind a reverse proxy. The xDS
`CertificateValidationContext` message (see
[envoyproxy/envoy#34235](https://togithub.com/envoyproxy/envoy/pull/34235))
has a `system_root_certs` field. In the gRPC client, if this field is
present and the `ca_certificate_provider_instance` field is unset,
system root certificates will be used for validation. This implements
[gRFC
A82](https://togithub.com/grpc/proposal/blob/master/A82-xds-system-root-certs.md).
- xds: Support for GCP Authentication Filter
([#&#8203;12499](https://togithub.com/grpc/grpc-java/issues/12499))
([`51611ba`](https://togithub.com/grpc/grpc-java/commit/51611bad1)). In
service mesh environments, there are cases where intermediate proxies
make it impossible to rely on mTLS for end-to-end authentication. These
cases can be addressed instead by the use of service account identity
JWT tokens. The xDS [GCP Authentication
filter](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/gcp_authn_filter)
provides a mechanism for attaching such JWT tokens as gRPC call
credentials on GCP. gRPC already supports a framework for xDS HTTP
filters, as described in [gRFC
A39](https://togithub.com/grpc/proposal/blob/master/A39-xds-http-filters.md).
This release supports the GCP Authentication filter under this framework
as described in [gRFC
A83](https://togithub.com/grpc/proposal/blob/master/A83-xds-gcp-authn-filter.md).
- xds: Support for xDS-based authority rewriting
([#&#8203;12499](https://togithub.com/grpc/grpc-java/issues/12499))
([`51611ba`](https://togithub.com/grpc/grpc-java/commit/51611bad1)).
gRPC supports getting routing configuration from an xDS server, as
described in gRFCs
[A27](https://togithub.com/grpc/proposal/blob/master/A27-xds-global-load-balancing.md)
and
[A28](https://togithub.com/grpc/proposal/blob/master/A28-xds-traffic-splitting-and-routing.md).
The xDS configuration can configure the client to rewrite the authority
header on requests. This functionality can be useful in cases where the
server is using the authority header to make decisions about how to
process the request, such as when multiple hosts are handled via a
reverse proxy. Note that this feature is solely about rewriting the
authority header on data plane RPCs; it does not affect the authority
used in the TLS handshake.\
As mentioned in [gRFC
A29](https://togithub.com/grpc/proposal/blob/master/A29-xds-tls-security.md),
there are use-cases for gRPC that prohibit trusting the xDS server to
control security-centric configuration. The authority rewriting feature
falls under the same umbrella as mTLS configuration. As a result, the
authority rewriting feature will only be enabled when the bootstrap
config for the xDS server has `trusted_xds_server` in the
`server_features` field.
- xds: xDS based SNI setting and SAN validation
([#&#8203;12378](https://togithub.com/grpc/grpc-java/issues/12378))
([`0567531`](https://togithub.com/grpc/grpc-java/commit/0567531)). When
using xDS credentials make SNI for the Tls handshake to be configured
via xDS, rather than use the channel authority as the SNI, and make SAN
validation to be able to use the SNI sent when so instructed via xDS.
Implements gRFC
[A101](https://togithub.com/grpc/proposal/blob/master/A101-SNI-setting-and-SNI-SAN-validation.md).

##### Documentation

- api: Document gRFC A18 TCP_USER_TIMEOUT handling for keepalive
([`da70387`](https://togithub.com/grpc/grpc-java/commit/da7038782))
- core: Fix AbstractClientStream Javadoc
([`28a6130`](https://togithub.com/grpc/grpc-java/commit/28a6130e8))
- examples: Document how to preserve META-INF/services in uber jars
([`97695d5`](https://togithub.com/grpc/grpc-java/commit/97695d523))

##### Thanks to

-   [@&#8203;panchenko](https://togithub.com/panchenko)
-   [@&#8203;Dayuxiaoshui](https://togithub.com/Dayuxiaoshui)
-   [@&#8203;becomeStar](https://togithub.com/becomeStar)
-   [@&#8203;kssumin](https://togithub.com/kssumin)
-   [@&#8203;marcindabrowski](https://togithub.com/marcindabrowski)
-   [@&#8203;MariusVolkhart](https://togithub.com/MariusVolkhart)
-   [@&#8203;Zgoda91](https://togithub.com/Zgoda91)
-   [@&#8203;devalkone](https://togithub.com/devalkone)

###
[`v1.77.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.77.1)

[Compare
Source](https://togithub.com/grpc/grpc-java/compare/v1.77.0...v1.77.1)

##### Bug Fixes

- rls: Avoid missed config update from reentrancy
([https://github.com/grpc/grpc-java/pull/12549](https://togithub.com/grpc/grpc-java/pull/12549)).
This fixes a regression since 1.75.0 triggered by CdsLb being converted
to XdsDepManager. Without this fix, a second channel to the same target
may hang when starting, causing DEADLINE_EXCEEDED, and unhang when the
control plane delivers an update (e.g., endpoint address update)

###
[`v1.77.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.77.0)

[Compare
Source](https://togithub.com/grpc/grpc-java/compare/v1.76.2...v1.77.0)

##### API Changes

- binder: Remove experimental `BinderChannelBuilder.bindAsUser()`
method, deprecated since 1.69
([#&#8203;12401](https://togithub.com/grpc/grpc-java/issues/12401))
([`f96ce06`](https://togithub.com/grpc/grpc-java/commit/f96ce0670))

##### Bug Fixes

- api: Fix name resolver bridge listener handling for address resolution
errors for custom name resolvers
([#&#8203;12441](https://togithub.com/grpc/grpc-java/issues/12441))
([`acbbf86`](https://togithub.com/grpc/grpc-java/commit/acbbf869a)).
This fixes regression introduced in v1.68.1 causing a
“IllegalStateException: No value present.” exception
- core: Fix NullPointerException during address update with Happy
Eyeballs
([`5e8af56`](https://togithub.com/grpc/grpc-java/commit/5e8af564e)).
This should not impact many people as the code is disabled by default,
behind two experimental environment variables
- okhttp: Fix bidirectional keep-alive causing spurious GOAWAY
([`6fc3fd0`](https://togithub.com/grpc/grpc-java/commit/6fc3fd046)).
This fixes the grpc-okhttp server incorrectly closing the connection
with `GOAWAY: too_many_pings`
- xds: SslContext updates handling when using system root certs
([#&#8203;12340](https://togithub.com/grpc/grpc-java/issues/12340))
([`63fdaac`](https://togithub.com/grpc/grpc-java/commit/63fdaaccc)).
Since `FileWatcherCertificateProvider` isn't used when using system root
trust store, the SslContext update for the handshake that depended on it
wasn't happening. This fix creates a separate `CertificateProvider` for
handling system root certs that doesn't rely on the
`FileWatcherCertificateProvider.`
- xds: Make cluster selection interceptor run before other filters
([#&#8203;12381](https://togithub.com/grpc/grpc-java/issues/12381))
([`82f9b8e`](https://togithub.com/grpc/grpc-java/commit/82f9b8ec0)).
This is needed when there is `GcpAuthenticationFilter` in the filter
chain to make available the cluster resource in `CallOption`s.
- xds: Handle wildcards in DNS SAN exact matching
([#&#8203;12345](https://togithub.com/grpc/grpc-java/issues/12345))
([`5b876cc`](https://togithub.com/grpc/grpc-java/commit/5b876cc86))
- android: Fix UdsChannelBuilder with WiFi Proxy
([`349a35a`](https://togithub.com/grpc/grpc-java/commit/349a35a9b))
- binder: Avoid potential deadlock when canceling AsyncSecurityPolicy
futures
([#&#8203;12283](https://togithub.com/grpc/grpc-java/issues/12283))
([`4725ced`](https://togithub.com/grpc/grpc-java/commit/4725ced99))
- binder: Fix a BinderServerTransport crash in the rare
shutdown-before-start case
([#&#8203;12440](https://togithub.com/grpc/grpc-java/issues/12440))
([`91f3f4d`](https://togithub.com/grpc/grpc-java/commit/91f3f4dc1))

##### Improvements

- Improve status messages by including causal error details in config
parsing errors for outlier detection and xds’s wrr locality policies
([`86e8b56`](https://togithub.com/grpc/grpc-java/commit/86e8b5617))
- xds: Detect negative ref count for xds client
([`21696cd`](https://togithub.com/grpc/grpc-java/commit/21696cd3d)). A
negative reference count could cause NullPointerExceptions, so when too
many unrefs are detected it produces a SEVERE warning and prevents the
reference count from going negative
- xds: Support deprecated xDS TLS fields for Istio compat
([#&#8203;12435](https://togithub.com/grpc/grpc-java/issues/12435))
([`53cd1a2`](https://togithub.com/grpc/grpc-java/commit/53cd1a225)).
This fixes a regression with Istio introduced in v1.73.0. This gives
time for [Istio’s new xDS field
support](https://togithub.com/istio/istio/pull/58257) to roll out
- googleapis: Allow wrapping NameResolver to inject XdsClient
([#&#8203;12450](https://togithub.com/grpc/grpc-java/issues/12450))
([`27d1508`](https://togithub.com/grpc/grpc-java/commit/27d150890)).
This allows googleapis to inject an xDS bootstrap to use with its
channels even if one is already specified in the environment variable or
system property. When the code was originally written there was a single
global XdsClient, but since gRFC A71 Xds Fallback each target string has
its own XdsClient and thus can have its own bootstrap
- alts: Allow overriding metadata server address with env variable
([`9ac12ef`](https://togithub.com/grpc/grpc-java/commit/9ac12ef89))
([`498f717`](https://togithub.com/grpc/grpc-java/commit/498f717fc))
- binder: Let the server know when the client fails to authorize it.
([#&#8203;12445](https://togithub.com/grpc/grpc-java/issues/12445))
([`599a0a1`](https://togithub.com/grpc/grpc-java/commit/599a0a146)) This
avoids the server needing to wait for the handshake timeout before
realizing the handshake failed

##### New Features

- opentelemetry: Implement otel retry metrics from gRFC A96
([#&#8203;12064](https://togithub.com/grpc/grpc-java/issues/12064))
([`d380191`](https://togithub.com/grpc/grpc-java/commit/d380191be))
- opentelemetry: propagate baggage to server metrics for custom
attributes
([#&#8203;12389](https://togithub.com/grpc/grpc-java/issues/12389))
([`155308d`](https://togithub.com/grpc/grpc-java/commit/155308db2))
- xds: Allow EC Keys in SPIFFE Bundle Map parsing
([#&#8203;12399](https://togithub.com/grpc/grpc-java/issues/12399))
([`559e3ba`](https://togithub.com/grpc/grpc-java/commit/559e3ba41))
- xds: Enable authority rewriting (gRFC A81), system root cert support
(gRFC A82), GCP authentication filter (gRFC A83), and SNI (gRFC A101)
([#&#8203;12499](https://togithub.com/grpc/grpc-java/issues/12499))
([`246c2b1`](https://togithub.com/grpc/grpc-java/commit/246c2b1ea)).
Authority rewriting requires the control plane to be labeled
`trusted_xds_server` in the bootstrap. System root cert support and SNI
require using XdsChannelCredentials
- rls: Add route lookup reason to request whether it is due to a cache
miss or stale cache entry
([#&#8203;12442](https://togithub.com/grpc/grpc-java/issues/12442))
([`795ce02`](https://togithub.com/grpc/grpc-java/commit/795ce0280))

##### Dependencies

- compiler: C++ protobuf used by codegen upgraded to 26.1
([#&#8203;12330](https://togithub.com/grpc/grpc-java/issues/12330))
([`55aefd5`](https://togithub.com/grpc/grpc-java/commit/55aefd5b8))
- alts: Remove dep on grpclb
([`b769f96`](https://togithub.com/grpc/grpc-java/commit/b769f966a)).
ALTS is no longer used with grpclb, so this removes dead code
- Upgrade netty to 4.1.127.Final
([`b37ee67`](https://togithub.com/grpc/grpc-java/commit/b37ee67cf))

##### Thanks to

[@&#8203;panchenko](https://togithub.com/panchenko)
[@&#8203;benjaminp](https://togithub.com/benjaminp)
[@&#8203;HyunSangHan](https://togithub.com/HyunSangHan)
[@&#8203;becomeStar](https://togithub.com/becomeStar)
[@&#8203;ZachChuba](https://togithub.com/ZachChuba)
[@&#8203;oliviamariacodes](https://togithub.com/oliviamariacodes)
[@&#8203;kssumin](https://togithub.com/kssumin)
[@&#8203;laz-canva](https://togithub.com/laz-canva)

</details>

---

### Configuration

📅 **Schedule**: 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://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

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

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: Renovate Bot <renovate@whitesourcesoftware.com>
Add a new module java-showcase-3.21.0. This is a copy of the
java-showcase module with a different version (3.21.0) of protobuf gen
code. This is intended to test the compatibility between protobuf
runtime v4.33.x and gen code 3.21.0.

The [gen code contains makeExtensionsImmutable
method](https://github.com/googleapis/sdk-platform-java/blob/c80004ad3fdafbf43aa9adf4e8069ac3b4fefaa4/java-showcase-3.21.0/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/AttemptSequenceRequest.java#L90)
which proves that it is generated with a protoc version prior to 3.21.7.

Add [a new
step](https://github.com/googleapis/sdk-platform-java/blob/c80004ad3fdafbf43aa9adf4e8069ac3b4fefaa4/.github/workflows/ci.yaml#L313-L319)
in CI to test this module.
Add a new module java-showcase-3.25.8. This is a copy of the
java-showcase module with a different version (3.25.8) of protobuf gen
code. This is intended to test the compatibility between protobuf
runtime v4.33.x and gen code 3.25.8.

Add [a new step](https://github.com/googleapis/sdk-platform-java/blob/bccc9ded96f5313c22cd4543c25e49fb673792f6/.github/workflows/ci.yaml#L306-L312)
in CI to test this module.
🤖 I have created a release *beep* *boop*
---


<details><summary>2.66.0</summary>

##
[2.66.0](googleapis/sdk-platform-java@v2.65.1...v2.66.0)
(2026-01-23)


### Features

* Upgrade protobuf runtime and gen code to 4.33.x
([#4000](googleapis/sdk-platform-java#4000))
([#4074](googleapis/sdk-platform-java#4074))
([3e37376](googleapis/sdk-platform-java@3e37376))


### Dependencies

* Downgrade opentelemetry to 1.51.0
([#4075](googleapis/sdk-platform-java#4075))
([cf65482](googleapis/sdk-platform-java@cf65482))
* update auth library to 1.42.0
([#4087](googleapis/sdk-platform-java#4087))
([ad9ee07](googleapis/sdk-platform-java@ad9ee07))
* update googleapis/java-cloud-bom digest to ef3656d
([#3630](googleapis/sdk-platform-java#3630))
([790bcf0](googleapis/sdk-platform-java@790bcf0))
* update http-client to 2.1.0
([#4086](googleapis/sdk-platform-java#4086))
([d8bc8f5](googleapis/sdk-platform-java@d8bc8f5))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
🤖 I have created a release *beep* *boop*
---


<details><summary>2.66.1-SNAPSHOT</summary>

### Updating meta-information for bleeding-edge SNAPSHOT release.
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[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/) |
|---|---|---|---|
|
[commons-codec:commons-codec](https://commons.apache.org/proper/commons-codec/)
([source](https://redirect.github.com/apache/commons-codec)) | `1.20.0`
→ `1.21.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/commons-codec:commons-codec/1.21.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/commons-codec:commons-codec/1.20.0/1.21.0?slim=true)
|
|
[io.opentelemetry.semconv:opentelemetry-semconv](https://redirect.github.com/open-telemetry/semantic-conventions-java)
| `1.37.0` → `1.39.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/io.opentelemetry.semconv:opentelemetry-semconv/1.39.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.opentelemetry.semconv:opentelemetry-semconv/1.37.0/1.39.0?slim=true)
|

---

### Release Notes

<details>
<summary>apache/commons-codec (commons-codec:commons-codec)</summary>

###
[`v1.21.0`](https://redirect.github.com/apache/commons-codec/blob/HEAD/RELEASE-NOTES.txt#Apache-Commons-Codec-1210-Release-Notes)

The Apache Commons Codec team is pleased to announce the release of
Apache Commons Codec 1.21.0.

The Apache Commons Codec component contains encoders and decoders for
formats such as Base16, Base32, Base64, digest, and Hexadecimal. In
addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

This is a feature and maintenance release. Java 8 or later is required.

</details>

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

###
[`v1.39.0`](https://redirect.github.com/open-telemetry/semantic-conventions-java/blob/HEAD/CHANGELOG.md#Version-1390-2026-01-28)

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

- Bump to semconv v1.39.0

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

###
[`v1.38.0`](https://redirect.github.com/open-telemetry/semantic-conventions-java/blob/HEAD/CHANGELOG.md#Version-1380-2026-01-27)

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

- Bump to semconv v1.38.0

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

</details>

---

### Configuration

📅 **Schedule**: 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 has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4zLjAiLCJ1cGRhdGVkSW5WZXIiOiI0My4zLjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: Renovate Bot <renovate@whitesourcesoftware.com>
This pull request is generated with proto changes between
[googleapis/googleapis@6406df7](googleapis/googleapis@6406df7)
(exclusive) and
[googleapis/googleapis@7a57066](googleapis/googleapis@7a57066)
(inclusive).

BEGIN_COMMIT_OVERRIDE
BEGIN_NESTED_COMMIT
docs: [common-protos] update reference documentation for
`SelectionInput.DROPDOWN` to include dynamic data sources and
autosuggestion
docs: [common-protos] update copyright to 2026

PiperOrigin-RevId: 864941572

Source Link:
[googleapis/googleapis@2ca9449](googleapis/googleapis@2ca9449)
END_NESTED_COMMIT
END_COMMIT_OVERRIDE
🤖 I have created a release *beep* *boop*
---


<details><summary>2.66.1</summary>

##
[2.66.1](googleapis/sdk-platform-java@v2.66.0...v2.66.1)
(2026-02-04)


### Documentation

* [common-protos] update reference documentation for
`SelectionInput.DROPDOWN` to include dynamic data sources and
autosuggestion
([9960262](googleapis/sdk-platform-java@9960262))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Remove 3.25.8 from protobuf compatibility testing because the gen code
has already been upgraded to 4.x.
We received vulnerability report for logback v1.5.21. Even though it is
only used in tests and does not affect customers, it is still good to
upgrade logback to 1.5.25 in tests.
🤖 I have created a release *beep* *boop*
---


<details><summary>2.66.2-SNAPSHOT</summary>

### Updating meta-information for bleeding-edge SNAPSHOT release.
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
## Summary
This PR introduces a new tracing mechanism in GAX that allows recording
traces using OpenTelemetry. It provides a way of recording spans and
attributes, following the existing `ApiTracer` class pattern with a few
tracing-specific additions. The implementation is meant to be extensible
to support other implementations.

## New Classes
- **`TraceManager`**: An interface for managing spans and attributes;
can be implemented by observability frameworks.
- **`OpenTelemetryTraceManager`**: An implementation of `TraceManager`
that uses the OpenTelemetry API.
- **`AppCentricTracer`**: An `ApiTracer` implementation that delegates
span management to a `TraceManager`.
- **`AppCentricTracerFactory`**: A factory for creating
`AppCentricTracer` instances.
- **`ApiTracerContext`**: A context object that carries information
(like `EndpointContext`'s server address property) used to infer common
attributes for all tracers.
- **`Span`**: A handle returned by `TraceManager` to manage the
lifecycle of a specific span (ending it, recording errors, or setting
attributes).

## Approach
### Connecting Tracer with Manager
The implementation aims to decouple `AppCentricTracer` from
`TraceManager`. When a tracer starts an operation or an attempt, it
requests a `Span` from the recorder. This handle allows the tracer to
update the span (e.g., adding attributes or recording errors) to keep
`AppCentricTracer` separated from specific recorder implementations
(like OpenTelemetry's `Span` object).

### Attribute Inference via `ApiTracerContext`
To provide a source of Span Attributes that are common to all
operations, we introduced `ApiTracerContext`. This context is passed to
`ApiTracerFactory` and contains information such as serverAddress
(provided by `EndpointContext`). It is operated by `ClientContext`.
Initially, only `serverAddress` is contained in this class and it's
meant to obtain the `server.address` attribute.
The class is ultimately operated by `AppCentricTracer` to extract the
necessary attributes.

### Integration Tests
A new integration test, `ITOtelTracing`, was added to the
`java-showcase` module:
- It validates that the expected spans (operation and attempt spans) are
recorded with the correct names, parent-child relationships, and
attributes (including `server.address` and `gcp.client.language`).


#### Note on java-bigtable downstream check
Since
[SkipTrailersTest](https://github.com/googleapis/java-bigtable/blob/49fe7692c55747714ada4296ff0f856b1109eba5/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/SkipTrailersTest.java#L97)
mocks the tracer factory, the `EndpointContext` call to
`apiTracerFactory.withContext()` returns a null factory, causing a null
pointer exception when building the client context.
We expect the test to be adjusted with this change with the next
release.

### Confirmation in Cloud Trace
<img width="1801" height="843" alt="image"
src="https://github.com/user-attachments/assets/dfccf278-7bfc-43fe-bf64-51cae21494ea"
/>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
chore: update googleapis commit at Thu Feb  5 03:00:22 UTC 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[com.google.auth:google-auth-library-bom](https://togithub.com/googleapis/google-auth-library-java)
| minor | `1.42.1` -> `1.43.0` |
|
[com.google.errorprone:error_prone_annotations](https://errorprone.info)
([source](https://togithub.com/google/error-prone)) | minor | `2.46.0`
-> `2.47.0` |
|
[com.google.protobuf:protobuf-java](https://developers.google.com/protocol-buffers/)
([source](https://togithub.com/protocolbuffers/protobuf)) | patch |
`4.33.4` -> `4.33.5` |
| [io.grpc:grpc-bom](https://togithub.com/grpc/grpc-java) | minor |
`1.78.0` -> `1.79.0` |
|
[io.opentelemetry:opentelemetry-bom](https://togithub.com/open-telemetry/opentelemetry-java)
| minor | `1.58.0` -> `1.59.0` |
| [org.apache.httpcomponents.core5:httpcore5](https://hc.apache.org/) |
patch | `5.4` -> `5.4.1` |

---

### Release Notes

<details>
<summary>googleapis/google-auth-library-java
(com.google.auth:google-auth-library-bom)</summary>

###
[`v1.43.0`](https://togithub.com/googleapis/google-auth-library-java/blob/HEAD/CHANGELOG.md#1430-2026-02-10)

[Compare
Source](https://togithub.com/googleapis/google-auth-library-java/compare/v1.42.1...v1.43.0)

##### Features

- Next release from main branch is 1.43.0
([#&#8203;1887](https://togithub.com/googleapis/google-auth-library-java/issues/1887))
([bec0ece](https://togithub.com/googleapis/google-auth-library-java/commit/bec0ecea8d1064a3467c4329a0d09f7d5705f84d))

##### Bug Fixes

- Deserialization checks valid class types for HttpTransportFactory
([#&#8203;1882](https://togithub.com/googleapis/google-auth-library-java/issues/1882))
([76ff74e](https://togithub.com/googleapis/google-auth-library-java/commit/76ff74e4c810d54763ca34d4f483730c43c329a8))

</details>

<details>
<summary>google/error-prone
(com.google.errorprone:error_prone_annotations)</summary>

###
[`v2.47.0`](https://togithub.com/google/error-prone/releases/tag/v2.47.0):
Error Prone 2.47.0

[Compare
Source](https://togithub.com/google/error-prone/compare/v2.46.0...v2.47.0)

New checks:

-
[`InterruptedInCatchBlock`](https://errorprone.info/bugpattern/InterruptedInCatchBlock):
Detect accidental calls to `Thread.interrupted()` inside of
`catch(InterruptedException e)` blocks.
- [`RefactorSwitch`](https://errorprone.info/bugpattern/RefactorSwitch):
Refactorings to simplify arrow switches
-
[`UnnamedVariable`](https://errorprone.info/bugpattern/UnnamedVariable):
Rename unused variables to `_`

Closed issues:
[#&#8203;1811](https://togithub.com/google/error-prone/issues/1811),
[#&#8203;4168](https://togithub.com/google/error-prone/issues/4168),
[#&#8203;5459](https://togithub.com/google/error-prone/issues/5459),
[#&#8203;5460](https://togithub.com/google/error-prone/issues/5460)

Full changelog:
google/error-prone@v2.46.0...v2.47.0

</details>

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

###
[`v1.79.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.79.0)

[Compare
Source](https://togithub.com/grpc/grpc-java/compare/v1.78.0...v1.79.0)

**API Changes**

- core: Delete the never-used
io.grpc.internal.ReadableBuffer.readBytes(ByteBuffer)
([#&#8203;12580](https://togithub.com/grpc/grpc-java/issues/12580))
([`738782f`](https://togithub.com/grpc/grpc-java/commit/738782fb0)).
This is deeply internal and not accessible, so shouldn’t impact
anything. However, Apache Arrow Java [uses reflection to access private
fields](https://togithub.com/apache/arrow-java/blob/96156ccc2bf933c75c852ca7c04418a61f87defd/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/GetReadableBuffer.java#L44-L45);
[GH-939: Remove reflection for gRPC
buffers](https://togithub.com/apache/arrow-java/pull/954) is swapping to
gRPC’s public zero-copy APIs

- opentelemetry: Add target attribute filter for metrics
([#&#8203;12587](https://togithub.com/grpc/grpc-java/issues/12587)).
Introduce an optional Predicate targetAttributeFilter to control how
grpc.target is recorded in OpenTelemetry client metrics. When a filter
is provided, targets rejected by the predicate are normalized to "other"
to reduce grpc.target metric cardinality, while accepted targets are
recorded as-is. If no filter is set, existing behavior is preserved.
This change adds a new Builder API on GrpcOpenTelemetry to allow
applications to configure the filter. 

**Behavior Changes**

- core: Convert AutoConfiguredLB to an actual LB
([`4bbf8ee`](https://togithub.com/grpc/grpc-java/commit/4bbf8eee5)).
This is an internal refactoring, but it does improve how errors are
handled for broken binaries. Previously, not being able to load
pick_first would result in a channel panic. Now it is handled as a
regular load balancing error

- okhttp: Assert no pending streams before transport READY
([#&#8203;12566](https://togithub.com/grpc/grpc-java/issues/12566))
([`ed6d175`](https://togithub.com/grpc/grpc-java/commit/ed6d175fc)). No
pending streams should exist when the transport transitions to READY.
This PR adds an assertion to help verify this invariant.

**Bug Fixes**

- core: PickFirstLB should not return a subchannel during CONNECTING
([`228fc8e`](https://togithub.com/grpc/grpc-java/commit/228fc8ecd)).
Pick-first in grpc-java has behaved this way since it was created, and
it was of no consequence. However, now there are some load balancing
policies (mainly RLS) that will do a pick() and hope the result to be
reasonably accurate for metrics.

**Improvements**

- core: Improve DEADLINE_EXCEEDED message for CallCreds delays
([`ead532b`](https://togithub.com/grpc/grpc-java/commit/ead532b39)).
Previously the error message contained “buffered_nanos” and
“waiting_for_connection” for connection delays. However, we discovered
the same strings were also used if waiting on CallCredentials. Now
you’ll see details like “connecting_and_lb_delay”,
“call_credentials_delay”, and “was_still_waiting”.

- opentelemetry: Add Android API checking
([`a9f73f4`](https://togithub.com/grpc/grpc-java/commit/a9f73f4c0)).
Previously we assumed OpenTelemetry support would not be used on
Android. It did happen to be compatible with Android, but since
OpenTelemetry does have some Android support, we now have a check that
it remains compatible

- core: Catch Errors when calling complex config parsing code
([`a535ed7`](https://togithub.com/grpc/grpc-java/commit/a535ed799)).
Error (and any other Throwable) is now caught and handled when parsing
configuration (e.g., service config, xds). This will cause such failures
to be handled gracefully instead of panicking the channel

- core: Implement LoadBalancer.Helper.createOobChannel() with the
internals of createResolvingOobChannel()
([`3915d02`](https://togithub.com/grpc/grpc-java/commit/3915d029c)).
This API is only expected to be relevant to the gRPC-LB lookaside load
balancer, and is not believed to have behavior changes. Out-of-band
channel had been implemented with its own stripped-down Channel without
load balancing. Reimplementing using the resolving oob channel makes it
a full-fledged channel and reduces the burden when integrating new
features and allows us to have a ManagedChannelBuilder to use with
efforts like [gRFC A110: Child Channel
Options](https://togithub.com/grpc/proposal/pull/529).

- xds: Implement the proactive connection logic in RingHashLoadBalancer
as outlined in gRFC A61
([#&#8203;12596](https://togithub.com/grpc/grpc-java/issues/12596)).
Previously, the Java implementation only initialized child balancers
when a ring-chosen endpoint was in TRANSIENT_FAILURE during a picker's
pickSubchannel call. This PR adds the missing logic: when a child
balancer reports TRANSIENT_FAILURE, the LoadBalancer now proactively
initializes the first available IDLE child if no other children are
currently connecting or ready.

This ensures a backup subchannel starts warming up immediately outside
the RPC flow, reducing failover latency and improving overall
resilience. This behavior was previously present but was inadvertently
lost after
[#&#8203;10610](https://togithub.com/grpc/grpc-java/pull/10610).

- api: Add RFC 3986 support to DnsNameResolverProvider
([#&#8203;12602](https://togithub.com/grpc/grpc-java/issues/12602))
([`f65127c`](https://togithub.com/grpc/grpc-java/commit/f65127cf7))
Experimental RFC 3986 target URI parsing mode (disabled by default)

**New Features**

- opentelemetry: Actual reason for the disconnects in subchannel
metrics([`6b2f758`](https://togithub.com/grpc/grpc-java/commit/6b2f7580c)),
completing the remaining work in [gRFC A96: OTel metrics for
Subchannels](https://togithub.com/grpc/proposal/pull/485/files)

**Dependencies** 

- protobuf: Upgrade Bazel protobuf to 33.1
([#&#8203;12553](https://togithub.com/grpc/grpc-java/issues/12553))
([`b61a8f4`](https://togithub.com/grpc/grpc-java/commit/b61a8f49c)) and
load java_proto_library from the protobuf repo
([`c7f3cdb`](https://togithub.com/grpc/grpc-java/commit/c7f3cdbc3))

- protobuf: Fix build with Bazel 9 by upgrading bazel_jar_jar and
grpc-proto versions
([#&#8203;12569](https://togithub.com/grpc/grpc-java/issues/12569))

- Upgrade dependencies
([#&#8203;12588](https://togithub.com/grpc/grpc-java/issues/12588))
([`6422092`](https://togithub.com/grpc/grpc-java/commit/6422092e3))
Netty to 4.1.130, error-prone annotations to 2.45.0, google-auth-library
to 1.41.0, tomcat-embed-core9 to 9.0.113, tomcat-embed-core to 10.1.50,
opentelemetry to 1.57.0, jetty-ee10-servlet to 12.1.5,
jetty-http2-server to 12.1.5, google-cloud-logging to 3.23.9,
google-auth to 1.41.0, proto-google-common-protos to 2.63.2.

**Thanks to**

-   [@&#8203;benjaminp](https://togithub.com/benjaminp)
-   [@&#8203;becomeStar](https://togithub.com/becomeStar)
-   [@&#8203;meteorcloudy](https://togithub.com/meteorcloudy)

</details>

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

###
[`v1.59.0`](https://togithub.com/open-telemetry/opentelemetry-java/blob/HEAD/CHANGELOG.md#Version-1590-2026-02-06)

[Compare
Source](https://togithub.com/open-telemetry/opentelemetry-java/compare/v1.58.0...v1.59.0)

##### API

-   Stabilize complex attributes

([#&#8203;7973](https://togithub.com/open-telemetry/opentelemetry-java/pull/7973))
-   Limit init valid hex array to range that can be true

([#&#8203;7809](https://togithub.com/open-telemetry/opentelemetry-java/pull/7809))

##### Extensions

-   Trace propagators: Deprecate OtTracePropagator

([#&#8203;8020](https://togithub.com/open-telemetry/opentelemetry-java/pull/8020))
-   Trace propagators: Deprecate JaegerPropagator

([#&#8203;8019](https://togithub.com/open-telemetry/opentelemetry-java/pull/8019))

##### SDK

- Move io.opentelemetry.sdk.internal to
io.opentelemetry.sdk.common.internal

([#&#8203;8003](https://togithub.com/open-telemetry/opentelemetry-java/pull/8003))
-   Always return ExtendedOpenTelemetry when incubator is available

([#&#8203;7991](https://togithub.com/open-telemetry/opentelemetry-java/pull/7991))

##### Traces

-   Fix memory leak in SdkSpan#spanEndingThread

([#&#8203;7984](https://togithub.com/open-telemetry/opentelemetry-java/pull/7984))

##### Metrics

-   Rework and publish metric benchmarks

([#&#8203;8000](https://togithub.com/open-telemetry/opentelemetry-java/pull/8000))
-   Update LongLastValueAggregator algo to avoid allocations

([#&#8203;8017](https://togithub.com/open-telemetry/opentelemetry-java/pull/8017))

##### Testing

-   Fix OTel JUnit5 Extension cleanup when using Nested test classes

([#&#8203;7999](https://togithub.com/open-telemetry/opentelemetry-java/pull/7999))
-   Add assertion support for Span hasException(null)

([#&#8203;8033](https://togithub.com/open-telemetry/opentelemetry-java/pull/8033))

##### Exporters

- **DEPRECATION**: `opentelemetry-exporter-zipkin` is now deprecated
with the
    last release planned for 1.65.0 (August 2026)

([#&#8203;7974](https://togithub.com/open-telemetry/opentelemetry-java/pull/7974))
-   Refactor http, grpc senders and promote to public API

([#&#8203;7782](https://togithub.com/open-telemetry/opentelemetry-java/pull/7782))

##### Extensions

-   Jaeger remote sampler: Remove unused code

([#&#8203;7970](https://togithub.com/open-telemetry/opentelemetry-java/pull/7970))
-   Incubator: Add AlwaysRecordSampler

([#&#8203;7877](https://togithub.com/open-telemetry/opentelemetry-java/pull/7877))

##### Project tooling

-   Align generate release contributors

([#&#8203;8023](https://togithub.com/open-telemetry/opentelemetry-java/pull/8023))

</details>

---

### Configuration

📅 **Schedule**: 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://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

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

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: Renovate Bot <renovate@whitesourcesoftware.com>
🤖 I have created a release *beep* *boop*
---


<details><summary>2.67.0</summary>

##
[2.67.0](googleapis/sdk-platform-java@v2.66.1...v2.67.0)
(2026-02-18)


### Features

* **observability:** introduce minimal tracing implementation
([#4105](googleapis/sdk-platform-java#4105))
([e4e5e89](googleapis/sdk-platform-java@e4e5e89))


### Dependencies

* Upgrade Google-Auth-Library to v1.43.0
([#4114](googleapis/sdk-platform-java#4114))
([825298b](googleapis/sdk-platform-java@825298b))
* Upgrade grpc to 1.76.3
([#4106](googleapis/sdk-platform-java#4106))
([c6555f5](googleapis/sdk-platform-java@c6555f5))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
🤖 I have created a release *beep* *boop*
---


<details><summary>2.67.1-SNAPSHOT</summary>

### Updating meta-information for bleeding-edge SNAPSHOT release.
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
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.