Draft
Conversation
…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` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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 ([#​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
…#3743) Fixes a typo in two image references on templates.
## 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)
This follows from the linter upgrade done in 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>
Temporary solution while googleapis/sdk-platform-java#3766 is not fixed
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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 - [@​panchenko](https://togithub.com/panchenko) - [@​Dayuxiaoshui](https://togithub.com/Dayuxiaoshui) - [@​becomeStar](https://togithub.com/becomeStar) - [@​kssumin](https://togithub.com/kssumin) - [@​marcindabrowski](https://togithub.com/marcindabrowski) - [@​MariusVolkhart](https://togithub.com/MariusVolkhart) - [@​Zgoda91](https://togithub.com/Zgoda91) - [@​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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. ([#​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 ([#​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 ([#​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 ([#​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) ([#​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 ([#​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 ([#​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 [@​panchenko](https://togithub.com/panchenko) [@​benjaminp](https://togithub.com/benjaminp) [@​HyunSangHan](https://togithub.com/HyunSangHan) [@​becomeStar](https://togithub.com/becomeStar) [@​ZachChuba](https://togithub.com/ZachChuba) [@​oliviamariacodes](https://togithub.com/oliviamariacodes) [@​kssumin](https://togithub.com/kssumin) [@​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` |  |  | | [io.opentelemetry.semconv:opentelemetry-semconv](https://redirect.github.com/open-telemetry/semantic-conventions-java) | `1.37.0` → `1.39.0` |  |  | --- ### 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 ([#​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 ([#​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 ([#​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 ([#​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: [#​1811](https://togithub.com/google/error-prone/issues/1811), [#​4168](https://togithub.com/google/error-prone/issues/4168), [#​5459](https://togithub.com/google/error-prone/issues/5459), [#​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) ([#​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 ([#​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 ([#​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 ([#​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 [#​10610](https://togithub.com/grpc/grpc-java/pull/10610). - api: Add RFC 3986 support to DnsNameResolverProvider ([#​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 ([#​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 ([#​12569](https://togithub.com/grpc/grpc-java/issues/12569)) - Upgrade dependencies ([#​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** - [@​benjaminp](https://togithub.com/benjaminp) - [@​becomeStar](https://togithub.com/becomeStar) - [@​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 ([#​7973](https://togithub.com/open-telemetry/opentelemetry-java/pull/7973)) - Limit init valid hex array to range that can be true ([#​7809](https://togithub.com/open-telemetry/opentelemetry-java/pull/7809)) ##### Extensions - Trace propagators: Deprecate OtTracePropagator ([#​8020](https://togithub.com/open-telemetry/opentelemetry-java/pull/8020)) - Trace propagators: Deprecate JaegerPropagator ([#​8019](https://togithub.com/open-telemetry/opentelemetry-java/pull/8019)) ##### SDK - Move io.opentelemetry.sdk.internal to io.opentelemetry.sdk.common.internal ([#​8003](https://togithub.com/open-telemetry/opentelemetry-java/pull/8003)) - Always return ExtendedOpenTelemetry when incubator is available ([#​7991](https://togithub.com/open-telemetry/opentelemetry-java/pull/7991)) ##### Traces - Fix memory leak in SdkSpan#spanEndingThread ([#​7984](https://togithub.com/open-telemetry/opentelemetry-java/pull/7984)) ##### Metrics - Rework and publish metric benchmarks ([#​8000](https://togithub.com/open-telemetry/opentelemetry-java/pull/8000)) - Update LongLastValueAggregator algo to avoid allocations ([#​8017](https://togithub.com/open-telemetry/opentelemetry-java/pull/8017)) ##### Testing - Fix OTel JUnit5 Extension cleanup when using Nested test classes ([#​7999](https://togithub.com/open-telemetry/opentelemetry-java/pull/7999)) - Add assertion support for Span hasException(null) ([#​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) ([#​7974](https://togithub.com/open-telemetry/opentelemetry-java/pull/7974)) - Refactor http, grpc senders and promote to public API ([#​7782](https://togithub.com/open-telemetry/opentelemetry-java/pull/7782)) ##### Extensions - Jaeger remote sampler: Remove unused code ([#​7970](https://togithub.com/open-telemetry/opentelemetry-java/pull/7970)) - Incubator: Add AlwaysRecordSampler ([#​7877](https://togithub.com/open-telemetry/opentelemetry-java/pull/7877)) ##### Project tooling - Align generate release contributors ([#​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>
…elease_please_versions.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.