Skip to content

chore: migrate sdk-platform-java#11961

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

chore: migrate sdk-platform-java#11961
chingor13 wants to merge 6475 commits intomainfrom
migrate-sdk-platform-java

Conversation

@chingor13
Copy link
Contributor

No description provided.

JoeWang1127 and others added 30 commits March 31, 2025 11:12
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>
… to v2.38.0 (#3773)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[com.google.errorprone:error_prone_annotations](https://errorprone.info)
([source](https://redirect.github.com/google/error-prone)) | `2.36.0` ->
`2.38.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.errorprone:error_prone_annotations/2.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.errorprone:error_prone_annotations/2.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.errorprone:error_prone_annotations/2.36.0/2.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.errorprone:error_prone_annotations/2.36.0/2.38.0?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>google/error-prone
(com.google.errorprone:error_prone_annotations)</summary>

###
[`v2.38.0`](https://redirect.github.com/google/error-prone/releases/tag/v2.38.0):
Error Prone 2.38.0

New checks:

-
[`AddNullMarkedToPackageInfo`](https://errorprone.info/bugpattern/AddNullMarkedToPackageInfo):
adds
[`@org.jspecify.annotations.NullMarked`](https://jspecify.dev/docs/api/org/jspecify/annotations/NullMarked.html)
annotation to package-info files
- [`IntLiteralCast`](https://errorprone.info/bugpattern/IntLiteralCast):
Suggests a literal of the desired type instead of casting an int literal
to a long, float, or double
-
[`MisleadingEmptyVarargs`](https://errorprone.info/bugpattern/MisleadingEmptyVarargs):
Discourages calling varargs methods that expect at least one argument
with no arguments, like Mockito's `thenThrow`
-
[`PreconditionsExpensiveString`](https://errorprone.info/bugpattern/PreconditionsExpensiveString):
Discourages expensive string formatting in Guava `Preconditions` checks
- [`SelfSet`](https://errorprone.info/bugpattern/SelfSet): Detects
mistakes like `proto.setFoo(proto.getFoo())`
-
[`UnnecessaryCopy`](https://errorprone.info/bugpattern/UnnecessaryCopy):
detect unnecessary copies of proto Lists and Maps.

Closed issues:
[#&#8203;4924](https://redirect.github.com/google/error-prone/issues/4924),
[#&#8203;4897](https://redirect.github.com/google/error-prone/issues/4897),
[#&#8203;4995](https://redirect.github.com/google/error-prone/issues/4995)

Full changelog:
google/error-prone@v2.37.0...v2.38.0

###
[`v2.37.0`](https://redirect.github.com/google/error-prone/releases/tag/v2.37.0):
Error Prone 2.37.0

[Compare
Source](https://redirect.github.com/google/error-prone/compare/v2.36.0...v2.37.0)

Changes:

- The annotations that were previously in `error_prone_type_annotations`
have been been merged into `error_prone_annotations`.
`error_prone_type_annotations` is now deprecated, and will be removed in
a future release.

New checks:

-
[`AssignmentExpression`](https://errorprone.info/bugpattern/AssignmentExpression)
- The use of an assignment expression can be surprising and hard to
read; consider factoring out the assignment to a separate statement.
-
[`IntFloatConversion`](https://errorprone.info/bugpattern/IntFloatConversion)
- Detect calls to `scalb` that should be using the double overload
instead
- [`InvalidSnippet`](https://errorprone.info/bugpattern/InvalidSnippet)
- Detects snippets which omit the `:` required for inline code.
-
[`JUnit4EmptyMethods`](https://errorprone.info/bugpattern/JUnit4EmptyMethods)
- Detects empty JUnit4 `@Before`, `@After`, `@BeforeClass`, and
`@AfterClass` methods.
-
[`MockIllegalThrows`](https://errorprone.info/bugpattern/MockIllegalThrows)
- Detects cases where Mockito is configured to throw checked exception
types which are impossible.
-
[`NegativeBoolean`](https://errorprone.info/bugpattern/NegativeBoolean)
- Prefer positive boolean names.
- [`RuleNotRun`](https://errorprone.info/bugpattern/RuleNotRun) -
Detects `TestRule`s not annotated with `@Rule`, that won't be run.
-
[`StringConcatToTextBlock`](https://errorprone.info/bugpattern/StringConcatToTextBlock)
- Replaces concatenated multiline strings with text blocks.
-
[`TimeInStaticInitializer`](https://errorprone.info/bugpattern/TimeInStaticInitializer)
- Detects accesses of the system time in static contexts.

Closed issues:

- Propagate check flags in patch mode
([#&#8203;4699](https://redirect.github.com/google/error-prone/issues/4699))
- Fixes a crash in ComputeIfAbsentAmbiguousReference
([#&#8203;4736](https://redirect.github.com/google/error-prone/issues/4736))
- Show the field name in HidingField diagnostics
([#&#8203;4775](https://redirect.github.com/google/error-prone/issues/4775))
- Add support for jakarta annotations to some checks
([#&#8203;4782](https://redirect.github.com/google/error-prone/issues/4782))
- FloatingPointAssertionWithinEpsilonTest depends on default locale
([#&#8203;4815](https://redirect.github.com/google/error-prone/issues/4815))
- `@InlineMe` patching of `Strings.repeat` produces broken code
([#&#8203;4819](https://redirect.github.com/google/error-prone/issues/4819))
- Fix a crash in IdentifierName on unnamed (`_`) variables
([#&#8203;4847](https://redirect.github.com/google/error-prone/issues/4847))
- Fix a crash in ArgumentParameterSwap
([#&#8203;490](https://redirect.github.com/google/error-prone/issues/490))

Full changelog:
google/error-prone@v2.36.0...v2.37.0

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[com.google.auth:google-auth-library-credentials](https://redirect.github.com/googleapis/google-auth-library-java)
| `1.33.1` -> `1.34.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.auth:google-auth-library-credentials/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.auth:google-auth-library-credentials/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.auth:google-auth-library-credentials/1.33.1/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.auth:google-auth-library-credentials/1.33.1/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[com.google.auth:google-auth-library-oauth2-http](https://redirect.github.com/googleapis/google-auth-library-java)
| `1.33.1` -> `1.34.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.auth:google-auth-library-oauth2-http/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.auth:google-auth-library-oauth2-http/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.auth:google-auth-library-oauth2-http/1.33.1/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.auth:google-auth-library-oauth2-http/1.33.1/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[com.google.auth:google-auth-library-bom](https://redirect.github.com/googleapis/google-auth-library-java)
| `1.33.1` -> `1.34.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.auth:google-auth-library-bom/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.auth:google-auth-library-bom/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.auth:google-auth-library-bom/1.33.1/1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.auth:google-auth-library-bom/1.33.1/1.34.0?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/google-auth-library-java
(com.google.auth:google-auth-library-credentials)</summary>

###
[`v1.34.0`](https://redirect.github.com/googleapis/google-auth-library-java/blob/HEAD/CHANGELOG.md#1340-2025-04-29)

[Compare
Source](https://redirect.github.com/googleapis/google-auth-library-java/compare/v1.33.1...v1.34.0)

##### Features

- Implement X509 certificate provider
([#&#8203;1722](https://redirect.github.com/googleapis/google-auth-library-java/issues/1722))
([4340684](https://redirect.github.com/googleapis/google-auth-library-java/commit/4340684fe29c9e9bffa90e88d0b1746f19b623ab))
- Next release from main branch is 1.34.0
([#&#8203;1698](https://redirect.github.com/googleapis/google-auth-library-java/issues/1698))
([fe43815](https://redirect.github.com/googleapis/google-auth-library-java/commit/fe4381513db1340190c4309a53c6265718682dde))
- Next release from main branch is 1.34.0
([#&#8203;1702](https://redirect.github.com/googleapis/google-auth-library-java/issues/1702))
([4507cf9](https://redirect.github.com/googleapis/google-auth-library-java/commit/4507cf9e17e7ff40cf142056d3929c87f5742dd1))

##### Bug Fixes

- Do not add padding in Client-Side CAB tokens.
([#&#8203;1728](https://redirect.github.com/googleapis/google-auth-library-java/issues/1728))
([8a75ccd](https://redirect.github.com/googleapis/google-auth-library-java/commit/8a75ccd1c09191abd8ebf463bc41810a38e185f5))

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
blakeli0 and others added 20 commits January 23, 2026 14:49
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>
…ributes (#4120)

This PR introduces the ability to include repository and artifact name
metadata in generated GAPIC libraries.

## Changes

### GAX (Google API Extensions)
- **`LibraryMetadata`**: Introduced a new internal class to hold
`repository` and `artifactName`.
- **`StubSettings` & `ClientContext`**: Added `LibraryMetadata` to these
classes to carry the metadata through the client lifecycle.
- **Observability/Tracing**: Updated `ApiTracerContext` and
`ObservabilityAttributes` to support these new attributes, enabling them
to be included in exported traces.

### GAPIC Generator
- Support for `repo` and `artifact` flags, passed down to generate a
method in `[Service]StubSettings` that builds an instance of
`LibraryMetadata`.

### Hermetic Build
- Support for `repo` and `artifact` to be passed down to
`generate_library.sh`. The flags reuse the existing logic that
determines the values.

## Verification Results
<img width="1412" height="877" alt="image"
src="https://github.com/user-attachments/assets/1b746361-db2b-4661-bbe6-38f7f63155aa"
/>

## 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.

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>
@chingor13 chingor13 changed the title Migrate sdk platform java chore: migrate sdk-platform-java Feb 26, 2026
@chingor13 chingor13 force-pushed the migrate-sdk-platform-java branch from 7cef60a to 49be0a2 Compare February 26, 2026 23:17
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.