Skip to content

Conversation

@feeblefakie
Copy link
Contributor

This is an automated backport of the following:

Please merge this PR after all checks have passed.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @feeblefakie, 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 backports a significant refactoring and enhancement to the transaction management system. It introduces a new configuration option to control the active transaction management feature, allowing for more flexible deployment scenarios. The internal implementation of active transaction management has been modularized into a dedicated registry, improving code organization and maintainability. Additionally, thread safety for transaction scanners has been explicitly addressed to prevent potential concurrency issues during transaction expiration and rollback.

Highlights

  • Configuration Option for Active Transaction Management: Introduced a new configuration option, activeTransactionManagementEnabled, allowing users to enable or disable the active transaction management feature. By default, this feature is enabled.
  • Refactoring of Active Transaction Management: The core logic for managing active transactions, including expiration and rollback, has been extracted into a new generic ActiveTransactionRegistry class. This centralizes the logic and improves reusability for both distributed and two-phase commit transaction managers.
  • Thread-Safe Scanner Implementation: A new SynchronizedScanner class has been added to ensure thread-safe access to transaction scanners. This is crucial for scenarios where transaction rollback might be triggered by an expiration handler running in a separate thread, preventing concurrent modification issues.
  • Abstract Distributed Transaction Provider: A new abstract class, AbstractDistributedTransactionProvider, was introduced to standardize how transaction managers are created and wrapped. It now conditionally applies active transaction management based on the new configuration setting.
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 a configuration option to enable or disable active transaction management, which defaults to enabled for backward compatibility. To support this, the code has been significantly refactored. Key changes include the introduction of AbstractDistributedTransactionProvider to centralize transaction manager decoration, ActiveTransactionRegistry to encapsulate active transaction tracking and expiration logic, and SynchronizedScanner to remove duplicated code for thread-safe scanner access. These changes improve the modularity and maintainability of the transaction management code. The changes are well-implemented and tested. I have one suggestion for improvement.

@brfrn169 brfrn169 merged commit 06cd803 into 3.16 Dec 4, 2025
116 of 117 checks passed
@brfrn169 brfrn169 deleted the 3.16-pull-3233 branch December 4, 2025 14:26
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.

2 participants