feat: support previous transaction ID in DatastoreTransactionManager …#4277
Open
mehdi0933 wants to merge 1 commit intoGoogleCloudPlatform:mainfrom
Open
feat: support previous transaction ID in DatastoreTransactionManager …#4277mehdi0933 wants to merge 1 commit intoGoogleCloudPlatform:mainfrom
mehdi0933 wants to merge 1 commit intoGoogleCloudPlatform:mainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR addresses issue #4262 by adding support for the previous_transaction_id in DatastoreTransactionManager. This allows for better handling of sequential transactions and improves idempotency when interacting with Google Cloud Datastore.
Key Changes:
Dynamic Transaction Options: Updated doBegin to utilize TransactionOptions.Builder, allowing the inclusion of a previousTransactionId if present in the Tx object.
Nullability Compliance: Added @nonnull and @nullable annotations to override methods to satisfy the project's @NonNullApi constraints and resolve IDE warnings.
Code Cleanup:
Removed redundant null checks in doCommit and doRollback to resolve "always true" logic warnings.
Optimized doCleanupAfterCompletion using Java's pattern matching for instanceof.
Unit Testing: Added a new test class DatastoreTransactionManagerTests to verify that the previousTransactionId is correctly propagated to the Datastore client.
Verification Results:
Linter/IDE: 0 problems found in IntelliJ (all nullability and "unused method" warnings resolved).
Tests: testBeginWithPreviousTransactionId passed successfully.
See
also CONTRIBUTING.md
.