Skip to content

Conversation

@rahul2393
Copy link
Contributor

This PR removes the legacy SessionPool from the Java Spanner client, transitioning to multiplexed sessions as the only session management mechanism. Multiplexed sessions allow a single session to support multiple parallel transactions, eliminating the need for session pooling.

@rahul2393 rahul2393 requested review from a team as code owners January 12, 2026 20:07
@product-auto-label product-auto-label bot added size: xl Pull request size is extra large. api: spanner Issues related to the googleapis/java-spanner API. labels Jan 12, 2026
@generated-files-bot
Copy link

Warning: This pull request is touching the following templated files:

  • .github/workflows/ci.yaml

@rahul2393 rahul2393 requested a review from olavloite January 12, 2026 20:07
@gemini-code-assist
Copy link

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 fundamentally refactors the session management within the Java Spanner client. By removing the traditional session pool and fully embracing multiplexed sessions, the client's architecture is streamlined. This change simplifies the codebase, reduces overhead associated with managing a pool of individual sessions, and aligns the client with a more efficient, modern approach to handling concurrent database interactions.

Highlights

  • Session Pool Removal: The legacy SessionPool mechanism has been entirely removed from the Java Spanner client, simplifying session management.
  • Exclusive Multiplexed Sessions: The client now exclusively uses multiplexed sessions, which allow a single session to handle multiple parallel transactions, eliminating the need for traditional session pooling.
  • API Simplification: Client implementations like BatchClientImpl and DatabaseClientImpl have been streamlined, removing logic and parameters related to the old session pool and direct session creation.
  • Deprecation of SessionPoolOptions: The SessionPoolOptions class and related methods in SessionClient have been deprecated, with a clear indication that session pool configurations are no longer relevant.
  • Test Infrastructure Cleanup: Numerous tests, benchmarks, and CI configurations related to the legacy session pool and its specific behaviors (e.g., integration-regular-sessions) have been removed or updated.

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

Ignored Files
  • Ignored by pattern: .github/workflows/** (2)
    • .github/workflows/ci.yaml
    • .github/workflows/integration-tests-against-emulator-with-regular-session.yaml
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

@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 is a significant and well-executed refactoring that removes the legacy SessionPool and transitions the Java Spanner client to exclusively use multiplexed sessions. The changes are consistent across the entire codebase, including production code, tests, benchmarks, and protobuf definitions, resulting in a much simpler and cleaner implementation. Obsolete files have been removed, and relevant public APIs have been clearly deprecated. I have one minor suggestion for removing some dead code that was left over from the refactoring. Overall, this is an excellent improvement.

I am having trouble creating individual review comments. Click here to see my feedback.

google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClientImpl.java (250-257)

medium

These methods are correctly removed as part of this refactoring. It seems that the fields nthRequest, dbId, and clientIdToOrdinalMap, along with the dbIdFromClientId() method, are now also unused. Consider removing them in a follow-up to complete the cleanup of dead code related to the old request ID generation.

@rahul2393 rahul2393 force-pushed the session-pool-cleanup branch from 738bac2 to 8f89cb4 Compare January 13, 2026 03:29
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