Skip to content

gRPC Transaction fix 25.12.1 01#3073

Closed
oc007us wants to merge 4 commits intoArcadeData:mainfrom
oc007us:gRPC-Tx-Fix-25.12.1-01
Closed

gRPC Transaction fix 25.12.1 01#3073
oc007us wants to merge 4 commits intoArcadeData:mainfrom
oc007us:gRPC-Tx-Fix-25.12.1-01

Conversation

@oc007us
Copy link

@oc007us oc007us commented Dec 24, 2025

What does this PR do?

Fixes backend Transaction propagation for the gRPC service

Motivation

Transactional operations were failing

Related issues

Incorrect Transaction propagation for the gRPC service

Additional Notes

None

Checklist

  • I have run the build using mvn clean package command
  • My unit tests cover both failure and success scenarios

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @oc007us, 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 resolves a critical issue where backend transaction propagation was failing in the gRPC service. The core solution involves ensuring that all operations related to a specific transaction are executed on a single, dedicated thread. This is achieved by introducing a TransactionContext that manages a Database instance and its associated single-thread executor, thereby correctly handling ArcadeDB's thread-local transaction model and preventing transactional failures.

Highlights

  • Enhanced Transaction Management: Introduced a TransactionContext to encapsulate Database instances and dedicated single-thread executors, ensuring thread affinity for ArcadeDB's thread-local transactions within the gRPC service.
  • Refactored Command Execution: The executeCommand method was refactored to properly handle both externally managed (client-initiated) and internally auto-wrapped transactions, executing them on their respective dedicated threads to prevent propagation issues.
  • Improved Transaction Lifecycle: beginTransaction, commitTransaction, and rollbackTransaction RPCs now correctly utilize the dedicated thread executors for safe and consistent transaction operations.
  • Maven Configuration Updates: Added a lifecycle mapping to grpc/pom.xml to ignore the protobuf-maven-plugin:generate goal in Eclipse, and updated protobuf-related dependency versions in the root pom.xml.
  • Gitignore Additions: Added /extensions.xml to .gitignore files in both the root and grpc/ directories.

🧠 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 a crucial fix for gRPC transaction propagation by ensuring thread affinity for transactional operations. The use of a TransactionContext with a dedicated single-thread executor for each transaction is a robust solution to the problem of thread-local transactions in a multi-threaded gRPC environment. The changes are well-implemented across beginTransaction, commitTransaction, rollbackTransaction, and executeCommand. The refactoring to support this is clean and improves the overall design. I've found one high-severity issue related to resource cleanup that should be addressed.

@mergify
Copy link
Contributor

mergify bot commented Dec 24, 2025

🧪 CI Insights

Here's what we observed from your CI run for 0702d5e.

🟢 All jobs passed!

But CI Insights is watching 👀

@lvca lvca requested a review from robfrank December 25, 2025 05:18
@lvca lvca added the bug label Dec 25, 2025
@robfrank robfrank mentioned this pull request Dec 26, 2025
@robfrank
Copy link
Collaborator

superseded by #3074

@robfrank robfrank closed this Dec 27, 2025
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.

4 participants