optimize: optimize transaction timeout judgment #777
+128
−11
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.
What this PR does:
In the seata-java, there's a pull request : optimize: optimize transaction timeout judgment apache/incubator-seata#4445
Problem Description: When the Transaction Manager (TM) initiates a transaction commit to the Transaction Coordinator (TC), the TC returns a status of TimeoutRollbacking but does not throw an exception. This leads the TM to believe the transaction was successfully committed, while in reality, the TC has instructed each Resource Manager (RM) to perform a rollback.
Solution: The TM side introduces a timer to calculate the time difference between the transaction commit and the begin phases. If this time difference exceeds the timeout, the TM will roll back the transaction; otherwise, it will proceed with the commit.
Which issue(s) this PR fixes:
Fixes #698
Special notes for your reviewer:
I created two test cases to simulate two scenarios: normal and abnormal rollback when TM detects timeout
Does this PR introduce a user-facing change?: