Skip to content

Conversation

@rahul2393
Copy link
Contributor

This commit adds the foundational SsFormat class that provides sortable string format (ssformat) encoding utilities. This encoding is used by Spanner for key ordering and routing.

Key features:

  • Composite tag encoding for interleaved tables
  • Signed/unsigned integer encoding (increasing/decreasing)
  • String and bytes encoding with proper escaping
  • Double encoding with proper sign handling
  • Timestamp and UUID encoding
  • Null value markers with configurable ordering
  • TargetRange class for key range representation

This is part of the experimental location-aware routing for improved latency.

@rahul2393 rahul2393 requested review from a team as code owners January 8, 2026 03:28
@product-auto-label product-auto-label bot added size: l Pull request size is large. api: spanner Issues related to the googleapis/java-spanner API. labels Jan 8, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @rahul2393, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces core encoding utilities for Spanner's key management and routing. It provides a robust SsFormat library for various data types and a TargetRange class for key range representation, laying the groundwork for advanced features like location-aware routing to enhance performance.

Highlights

  • New SsFormat Encoding Library: Introduces the foundational SsFormat class, providing sortable string format (ssformat) encoding utilities essential for Spanner's key ordering and routing mechanisms.
  • Comprehensive Encoding Support: The SsFormat library supports a wide range of data types, including composite tags for interleaved tables, signed/unsigned integers (increasing/decreasing order), strings and bytes with proper escaping, doubles with sign handling, timestamps, and UUIDs. It also includes configurable null value markers.
  • New TargetRange Class: Adds a TargetRange class to represent key ranges, featuring start, limit, and approximate properties, along with a mergeFrom method for combining ranges.
  • Location-Aware Routing: These changes are part of an experimental initiative to implement location-aware routing, aiming to improve latency within Spanner.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the SsFormat encoding library and the TargetRange class, which are foundational for sortable string format (ssformat) encoding utilities used by Spanner for key ordering and routing. The SsFormat class provides various encoding methods for different data types, including integers, strings, doubles, timestamps, and UUIDs, supporting both increasing and decreasing order. The TargetRange class represents a key range and includes logic for merging ranges. Overall, it is a good starting point. However, I've identified a potential correctness issue in the byte sequence encoding and some areas for improved maintainability.

@rahul2393 rahul2393 force-pushed the feat/ssformat-encoding branch 2 times, most recently from fcdf2cc to 5ad36f7 Compare January 8, 2026 07:14
@product-auto-label product-auto-label bot added size: xl Pull request size is extra large. and removed size: l Pull request size is large. labels Jan 9, 2026
Comment on lines 284 to 286
decreasing
? ASCENDING_ZERO_ESCAPE
: ASCENDING_ZERO_ESCAPE); // After inversion, 0xFF becomes 0x00. Escape for 0x00
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems weird. Regardless of the value of decreasing, the same byte is written. Can this ternary operation be removed? If not, can we have a test that would have caught this?

@rahul2393 rahul2393 force-pushed the feat/ssformat-encoding branch from 22555e7 to d279fef Compare January 14, 2026 07:25
@rahul2393 rahul2393 changed the title feat: add SsFormat encoding library for SpanFE bypass feat: add SsFormat encoding library Jan 14, 2026
@rahul2393 rahul2393 force-pushed the feat/ssformat-encoding branch from d279fef to 258c049 Compare January 14, 2026 07:29
@rahul2393 rahul2393 force-pushed the feat/ssformat-encoding branch from 258c049 to 72f2d82 Compare January 14, 2026 07:38
olavloite
olavloite previously approved these changes Jan 14, 2026
@rahul2393 rahul2393 merged commit 338a9b1 into main Jan 15, 2026
43 checks passed
@rahul2393 rahul2393 deleted the feat/ssformat-encoding branch January 15, 2026 15:24
blakeli0 added a commit that referenced this pull request Feb 3, 2026
* chore: add release-please config for protobuf-4.x (#4249)

* fix: Refine connecitivity metrics to capture RPCs with no response he… (#4252)

* fix: Refine connecitivity metrics to capture RPCs with no response headers

* test fix

* fix: retry as PDML dit not retry Resource limit exceeded (#4258)

Most transactions that exceed the mutation limit for an atomic transaction will fail with the error "The transaction contains too many mutations.". However, it is also possible that the transaction fails with the more generic error message "Transaction resource limits exceeded". This error did not trigger a retry of the statement using a PDML transaction.

Fixes #4253

* deps: update dependency com.google.cloud:sdk-platform-java-config to v3.54.2 (#4261)

* deps: update googleapis/sdk-platform-java action to v2.64.2 (#4262)

* feat: include RequestID in requests and errors (#4263)

- Send a RequestID to Spanner for each request
- Make sure that the attempt number of the RequestID is increased
  if the RPC is retried.
- Include the RequestID in every error that is thrown due to an error
  that is returned by Spanner.

* feat: make grpc-gcp default enabled (#4239)

This PR enables the gRPC-GCP channel pool extension by default for Cloud Spanner Java client.

**What's Changing for Customers**

**Before this change**

- gRPC-GCP extension was disabled by default
- Default number of channels: 4
- Channel pooling was handled by GAX

**After this change**

- gRPC-GCP extension is enabled by default
- Default number of channels: 8
- Channel pooling is handled by gRPC-GCP extension

**Benefits of gRPC-GCP**

- **Improved resilience:** When a network connection fails on a particular channel, operations can be automatically retried on a different gRPC channel
- **Better channel management:** gRPC-GCP provides more sophisticated channel affinity and load balancing

**How to Disable gRPC-GCP (Switch Back to GAX Channel Pool)**

If you need to disable gRPC-GCP and use the previous GAX channel pooling behavior, use the `disableGrpcGcpExtension()` method:
```
SpannerOptions options = SpannerOptions.newBuilder()
    .setProjectId("my-project")
    .disableGrpcGcpExtension()
    .build();
```

When disabled, the default number of channels reverts to 4 (the previous default).

**When You Might Want to Disable gRPC-GCP**

- **Maintaining previous behavior:** If you want to keep the exact same behavior as before this change (GAX channel pool with 4 default channels).
- **Troubleshooting**: If you experience any unexpected behavior, disabling gRPC-GCP can help isolate whether the issue is related to the channel pooling mechanism.

* chore(main): release 6.104.1-SNAPSHOT (#4248)

:robot: I have created a release *beep* *boop*
---


### Updating meta-information for bleeding-edge SNAPSHOT release.

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

* feat: add support of dynamic channel pooling (#4265)

* feat: add support of dynamic channel pooling

* set initial pool size to 0 make dynamic channel pool work

* chore: generate libraries at Tue Dec 16 06:00:50 UTC 2025

* bump grpc-gcp-java version

* fix test

* incorporate suggestions

* chore: generate libraries at Tue Dec 16 09:56:45 UTC 2025

* make dynamic channel pool default disabled

* add verifySameChannelId back and fix partitionDML test

* support setting GcpChannelPoolOptions directly

---------

Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>

* chore(main): release 6.105.0 (#4267)

* chore(main): release 6.105.0

* chore: generate libraries at Tue Dec 16 17:46:24 UTC 2025

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>

* chore(main): release 6.105.1-SNAPSHOT (#4268)

:robot: I have created a release *beep* *boop*
---


### Updating meta-information for bleeding-edge SNAPSHOT release.

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

* chore: enable afe latency metric test (#4283)

* chore: use graal-sdk-nativeimage.version to manage graal nativeimage versions (#4284)

* chore: use graal-sdk-nativeimage.version to manage graal-sdk versions

* chore: generate libraries at Thu Jan  1 23:39:12 UTC 2026

---------

Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>

* feat: support SHOW DEFAULT_TRANSACTION_ISOLATION for PG databases (#4285)

The `SHOW DEFAULT_TRANSACTION_ISOLATION` command can be used in PostgreSQL to query
the current default isolation level for a connection. This command was not supported
by the Spanner JDBC driver and PGAdapter, which made it difficult for customers to
check whether their attempt to set a different default isolation level actually worked.

Updates GoogleCloudPlatform/pgadapter#3984

* fix: adjust the initial polling delay for ddl operations (#4275)

* fix: adjust the initial polling delay for ddl operations

* fix the lint issue

* refactor the code

* create a separate setting for updateDatabaseDdl

* chore: abstract plain text settings into a SpannerOption (#4264)

* chore: abstract plain text settings into a SpannerOption

* add unit test for plain text scenarios

* gemini suggested code changes

* updated javadoc

* missing space

* fixed unit test

---------

Co-authored-by: rahul2393 <irahul@google.com>

* fix: Retry creation of multiplexed session (#4288)

* fix(spanner): Retry creation of multiplexed session

* Reduce wait time to run tests faster

* chore(main): release 6.106.0 (#4286)

* chore(main): release 6.106.0

* chore: generate libraries at Wed Jan  7 15:11:02 UTC 2026

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>

* chore: Add Clirr exemptions for Protobuf 4.27.4+ runtime (#4297)

* feat: Add Dynamic Channel Pooling (DCP) support to Connection API (#4299)

* feat: Add Dynamic Channel Pooling (DCP) support to Connection API

* incorporate changes

* test: skip PGErrorCode assert check for experimental host in ITQueryTest.badquery (#4290)

* test: skip PGErrorCode assert check for experimental host

* gemini suggested code applied

* chore: cleanup release-please config (#4254)

* chore: cleanup release-please config

- Remove redundant options already declared at the top level.\n- Remove bumpMinorPreMajor for repositories after the first major release.

* chore: format release-please.yml

---------

Co-authored-by: rahul2393 <irahul@google.com>

* deps: update dependency com.google.cloud:sdk-platform-java-config to v3.55.1 (#4302)

* deps: update googleapis/sdk-platform-java action to v2.65.1 (#4301)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [googleapis/sdk-platform-java](https://redirect.github.com/googleapis/sdk-platform-java) | action | minor | `v2.64.2` → `v2.65.1` |

---

### Release Notes

<details>
<summary>googleapis/sdk-platform-java (googleapis/sdk-platform-java)</summary>

### [`v2.65.1`](https://redirect.github.com/googleapis/sdk-platform-java/releases/tag/v2.65.1)

[Compare Source](https://redirect.github.com/googleapis/sdk-platform-java/compare/v2.65.0...v2.65.1)

##### Documentation

- Update docs for GoogleCredentialsProvider#setScopesToApply ([#&#8203;4057](https://redirect.github.com/googleapis/sdk-platform-java/issues/4057)) ([0a9962f](https://redirect.github.com/googleapis/sdk-platform-java/commit/0a9962f9945b6018796a808f89a6a3a309d1ca04))

### [`v2.65.0`](https://redirect.github.com/googleapis/sdk-platform-java/releases/tag/v2.65.0)

[Compare Source](https://redirect.github.com/googleapis/sdk-platform-java/compare/v2.64.2...v2.65.0)

##### Features

- add org.json:json to third-party-dependencies pom ([#&#8203;4047](https://redirect.github.com/googleapis/sdk-platform-java/issues/4047)) ([ffa432e](https://redirect.github.com/googleapis/sdk-platform-java/commit/ffa432e4e4ae763845afd48b404836c88698bdc0)), closes [#&#8203;4046](https://redirect.github.com/googleapis/sdk-platform-java/issues/4046)
- remove dependency management of graal-sdk ([#&#8203;4033](https://redirect.github.com/googleapis/sdk-platform-java/issues/4033)) ([ad05c34](https://redirect.github.com/googleapis/sdk-platform-java/commit/ad05c34e205c09ad035f469170b0c62b4423b748))

##### Bug Fixes

- add api\_version breadcrumb to client docs ([#&#8203;4018](https://redirect.github.com/googleapis/sdk-platform-java/issues/4018)) ([a2b2179](https://redirect.github.com/googleapis/sdk-platform-java/commit/a2b2179874e6a5435001fe201f4eecc2a8e4c531))
- Create a single S2AChannelCredentials per application ([#&#8203;3989](https://redirect.github.com/googleapis/sdk-platform-java/issues/3989)) ([3758b43](https://redirect.github.com/googleapis/sdk-platform-java/commit/3758b436d7e80b79ad7d5ea330d8f2bf2f430330))
- provide API to share the same background executor for channel po… ([#&#8203;4030](https://redirect.github.com/googleapis/sdk-platform-java/issues/4030)) ([178182c](https://redirect.github.com/googleapis/sdk-platform-java/commit/178182c76c1b35e702215a88adc3ab511dd35a9e))

##### Dependencies

- update dependencies.txt for grpc-gcp to 1.9.0  ([#&#8203;4025](https://redirect.github.com/googleapis/sdk-platform-java/issues/4025)) ([b68791d](https://redirect.github.com/googleapis/sdk-platform-java/commit/b68791d074c02e02a5ccf2f937a5922749a14f56))
- update google api dependencies ([#&#8203;3917](https://redirect.github.com/googleapis/sdk-platform-java/issues/3917)) ([480cf13](https://redirect.github.com/googleapis/sdk-platform-java/commit/480cf13148687c53c4af3da9d48490aeb5bf4b88))
- update google.http-client.version to 2.0.3 ([#&#8203;4054](https://redirect.github.com/googleapis/sdk-platform-java/issues/4054)) ([b9a8c89](https://redirect.github.com/googleapis/sdk-platform-java/commit/b9a8c8924e7b03bca8a97e476abfd012b86f6d45))

##### Documentation

- Fix retry guide link in javadocs ([#&#8203;4029](https://redirect.github.com/googleapis/sdk-platform-java/issues/4029)) ([b43f77c](https://redirect.github.com/googleapis/sdk-platform-java/commit/b43f77c66d93d2423744d0f6d6a0a2a53a06e6d9))

</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 this update 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/java-spanner).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

* chore: remove explicit grpc-gcp version pinning (#4303)

* feat: add SsFormat encoding library (#4292)

* feat: add SsFormat encoding library

* remove unsigned methods

* fix javadoc

* refactored appendInt method names + added tests for target range

* chore(main): release 6.106.1-SNAPSHOT (#4291)

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

* chore: Add gcp resource name span attribute (#4306)

* chore: Add gcp resource name span attribute

* Update google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetrySpanTest.java

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* chore: Add gcp resource name span attribute

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* deps: update dependency net.bytebuddy:byte-buddy to v1.18.4 (#4244)

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [net.bytebuddy:byte-buddy](https://bytebuddy.net) | `1.18.1` → `1.18.4` | ![age](https://developer.mend.io/api/mc/badges/age/maven/net.bytebuddy:byte-buddy/1.18.4?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/net.bytebuddy:byte-buddy/1.18.4?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/net.bytebuddy:byte-buddy/1.18.1/1.18.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/net.bytebuddy:byte-buddy/1.18.1/1.18.4?slim=true) |

---

### 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 this update 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/java-spanner).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xOS45IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

* deps: update google.cloud.monitoring.version to v3.83.0 (#4270)

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [com.google.cloud:google-cloud-monitoring](https://redirect.github.com/googleapis/google-cloud-java) | `3.81.0` → `3.83.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-monitoring/3.83.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-monitoring/3.83.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-monitoring/3.81.0/3.83.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-monitoring/3.81.0/3.83.0?slim=true) |
| [com.google.api.grpc:grpc-google-cloud-monitoring-v3](https://redirect.github.com/googleapis/google-cloud-java) | `3.81.0` → `3.83.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.api.grpc:grpc-google-cloud-monitoring-v3/3.83.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.api.grpc:grpc-google-cloud-monitoring-v3/3.83.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.api.grpc:grpc-google-cloud-monitoring-v3/3.81.0/3.83.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.api.grpc:grpc-google-cloud-monitoring-v3/3.81.0/3.83.0?slim=true) |
| [com.google.api.grpc:proto-google-cloud-monitoring-v3](https://redirect.github.com/googleapis/google-cloud-java) | `3.81.0` → `3.83.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.api.grpc:proto-google-cloud-monitoring-v3/3.83.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.api.grpc:proto-google-cloud-monitoring-v3/3.83.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.api.grpc:proto-google-cloud-monitoring-v3/3.81.0/3.83.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.api.grpc:proto-google-cloud-monitoring-v3/3.81.0/3.83.0?slim=true) |

---

### 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/java-spanner).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi41NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

* chore(deps): update dependency com.google.cloud:libraries-bom to v26.72.0 (#4234)

This PR contains the following updates:

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

---

### Release Notes

<details>
<summary>googleapis/java-cloud-bom (com.google.cloud:libraries-bom)</summary>

### [`v26.72.0`](https://redirect.github.com/googleapis/java-cloud-bom/blob/HEAD/CHANGELOG.md#26720-2025-11-18)

[Compare Source](https://redirect.github.com/googleapis/java-cloud-bom/compare/v26.71.0...v26.72.0)

##### Dependencies

- update dependency com.google.cloud:first-party-dependencies to v3.54.1 ([#&#8203;7266](https://redirect.github.com/googleapis/java-cloud-bom/issues/7266)) ([2b00ef5](https://redirect.github.com/googleapis/java-cloud-bom/commit/2b00ef51060c6fc8b1b772b352bd0b22f25ee09a))
- update dependency com.google.cloud:gapic-libraries-bom to v1.74.0 ([#&#8203;7271](https://redirect.github.com/googleapis/java-cloud-bom/issues/7271)) ([b52b9d9](https://redirect.github.com/googleapis/java-cloud-bom/commit/b52b9d958d2a5f89600b808164f14720dfb56d7f))
- update dependency com.google.cloud:google-cloud-bigquery to v2.56.0 ([#&#8203;7279](https://redirect.github.com/googleapis/java-cloud-bom/issues/7279)) ([d7876b6](https://redirect.github.com/googleapis/java-cloud-bom/commit/d7876b6b11bce64d3f62f405da6d9ed928a5ecab))
- update dependency com.google.cloud:google-cloud-bigquerystorage-bom to v3.18.0 ([#&#8203;7273](https://redirect.github.com/googleapis/java-cloud-bom/issues/7273)) ([b59ad99](https://redirect.github.com/googleapis/java-cloud-bom/commit/b59ad99edc23294254334d3dae4a181c8e0c25ed))
- update dependency com.google.cloud:google-cloud-bigtable-bom to v2.70.0 ([#&#8203;7281](https://redirect.github.com/googleapis/java-cloud-bom/issues/7281)) ([5f79ffc](https://redirect.github.com/googleapis/java-cloud-bom/commit/5f79ffc4d14c510d38d5a019ab5f0d7a711c2e6a))
- update dependency com.google.cloud:google-cloud-datastore-bom to v2.33.0 ([#&#8203;7276](https://redirect.github.com/googleapis/java-cloud-bom/issues/7276)) ([52bc904](https://redirect.github.com/googleapis/java-cloud-bom/commit/52bc90484653070c5288312342aac53915ac8973))
- update dependency com.google.cloud:google-cloud-firestore-bom to v3.33.4 ([#&#8203;7274](https://redirect.github.com/googleapis/java-cloud-bom/issues/7274)) ([58aa10c](https://redirect.github.com/googleapis/java-cloud-bom/commit/58aa10ca5b7bb81115c6fab3f8719375f2345d84))
- update dependency com.google.cloud:google-cloud-logging-bom to v3.23.8 ([#&#8203;7275](https://redirect.github.com/googleapis/java-cloud-bom/issues/7275)) ([6538b89](https://redirect.github.com/googleapis/java-cloud-bom/commit/6538b890fd2c1d966d898cf10ad13cd3d10aeba9))
- update dependency com.google.cloud:google-cloud-logging-logback to v0.132.19-alpha ([#&#8203;7277](https://redirect.github.com/googleapis/java-cloud-bom/issues/7277)) ([7c5c2f0](https://redirect.github.com/googleapis/java-cloud-bom/commit/7c5c2f080956a73f22a723fd3d67efca0d8d6967))
- update dependency com.google.cloud:google-cloud-nio to v0.128.8 ([#&#8203;7269](https://redirect.github.com/googleapis/java-cloud-bom/issues/7269)) ([0ef2783](https://redirect.github.com/googleapis/java-cloud-bom/commit/0ef2783c1e92cbb90fd9aa9baf9a4749cad87a29))
- update dependency com.google.cloud:google-cloud-pubsub-bom to v1.143.1 ([#&#8203;7272](https://redirect.github.com/googleapis/java-cloud-bom/issues/7272)) ([f9c869b](https://redirect.github.com/googleapis/java-cloud-bom/commit/f9c869bd0e4f1a71ff225ca09d6d094434d250d2))
- update dependency com.google.cloud:google-cloud-pubsublite-bom to v1.15.19 ([#&#8203;7278](https://redirect.github.com/googleapis/java-cloud-bom/issues/7278)) ([3f9ad11](https://redirect.github.com/googleapis/java-cloud-bom/commit/3f9ad11ecc0683563c3878bee01c6d033f2b4d16))
- update dependency com.google.cloud:google-cloud-spanner-bom to v6.103.0 ([#&#8203;7280](https://redirect.github.com/googleapis/java-cloud-bom/issues/7280)) ([0b61648](https://redirect.github.com/googleapis/java-cloud-bom/commit/0b616489685dac70d765778966b00c2523589190))
- update dependency com.google.cloud:google-cloud-spanner-jdbc to v2.34.0 ([#&#8203;7265](https://redirect.github.com/googleapis/java-cloud-bom/issues/7265)) ([297f8d5](https://redirect.github.com/googleapis/java-cloud-bom/commit/297f8d505d97bff0dd93ef5dba92d641ccbb7a64))
- update dependency com.google.cloud:google-cloud-storage-bom to v2.60.0 ([#&#8203;7267](https://redirect.github.com/googleapis/java-cloud-bom/issues/7267)) ([63b1b4c](https://redirect.github.com/googleapis/java-cloud-bom/commit/63b1b4c765bd019153cfeae3b98d69363e679d6e))

</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 this update 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/java-spanner).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xMy41IiwidXBkYXRlZEluVmVyIjoiNDIuMzIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

* deps: update dependency com.google.api.grpc:proto-google-cloud-trace-v1 to v2.82.0 (#4227)

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [com.google.api.grpc:proto-google-cloud-trace-v1](https://redirect.github.com/googleapis/google-cloud-java) | `2.79.0` → `2.82.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.api.grpc:proto-google-cloud-trace-v1/2.82.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.api.grpc:proto-google-cloud-trace-v1/2.82.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.api.grpc:proto-google-cloud-trace-v1/2.79.0/2.82.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.api.grpc:proto-google-cloud-trace-v1/2.79.0/2.82.0?slim=true) |

---

### 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/java-spanner).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQyLjc0LjUiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

* deps: update dependency com.google.cloud:google-cloud-monitoring to v3.83.0 (#4169)

This PR contains the following updates:

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

---

### 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 this update 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/java-spanner).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDMuMSIsInVwZGF0ZWRJblZlciI6IjQyLjc0LjUiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

* chore(main): release 6.107.0 (#4304)

* chore(main): release 6.107.0

* chore: generate libraries at Fri Jan 16 17:05:30 UTC 2026

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>

---------

Co-authored-by: Diego Marquez <diegomarquezp@google.com>
Co-authored-by: surbhigarg92 <surbhigarg.92@gmail.com>
Co-authored-by: Knut Olav Løite <koloite@gmail.com>
Co-authored-by: Mend Renovate <bot@renovateapp.com>
Co-authored-by: rahul2393 <irahul@google.com>
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>
Co-authored-by: Mridula <66699525+mpeddada1@users.noreply.github.com>
Co-authored-by: Hengfeng Li <hengfeng@google.com>
Co-authored-by: Sagnik Ghosh <sagnikghosh@google.com>
Co-authored-by: Sakthivel Subramanian <179120858+sakthivelmanii@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: spanner Issues related to the googleapis/java-spanner API. size: xl Pull request size is extra large.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants