deardeng opened a new pull request, #66448:
URL: https://github.com/apache/doris/pull/66448
Cause:
PR #54124 moved the migration and push locks from RowsetBuilder into
Tablet::prepare_txn. During that refactor, the call to TxnManager::prepare_txn
changed from the const Tablet& overload to the raw tablet_id/tablet_uid
overload. This silently bypassed the TABLET_SHUTDOWN guard introduced by PR
#42296.
Impact:
A load thread holding an old Tablet instance could resume after migration
and register the stale tablet UID in the transaction map. Publish would then
operate on the reloaded Tablet with a new UID and leave the transaction in an
E-909 state.
Fix:
Call the const Tablet& overload with *this while the migration and push
locks are held. This preserves the lock encapsulation from PR #54124 and
restores the shutdown-tablet protection from PR #42296.
Test:
Add a deterministic unit test that marks a Tablet as TABLET_SHUTDOWN,
verifies Tablet::prepare_txn fails, and verifies no stale tablet entry is
registered. TxnManagerTest.* passes 16/16.
(cherry picked from commit ccfb166677719b65dd224970e0f2323a1e93c1fb)
### What problem does this PR solve?
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
### Release note
None
### Check List (For Author)
- Test <!-- At least one of them must be included. -->
- [ ] Regression test
- [x] Unit Test
- [ ] Manual test (add detailed scripts or steps below)
- [ ] No need to test or manual test. Explain why:
- [ ] This is a refactor/code format and no logic has been changed.
- [ ] Previous test can cover this change.
- [ ] No code files have been changed.
- [ ] Other reason <!-- Add your reason? -->
- Behavior changed:
- [x] No.
- [ ] Yes. <!-- Explain the behavior change -->
- Does this need documentation?
- [x] No.
- [ ] Yes. <!-- Add document PR link here. eg:
https://github.com/apache/doris-website/pull/1214 -->
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR should
merge into -->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]