Skip to content

branch-4.0: [fix](be) Protect tablet writer map lookup in load channel #64604 - #64751

Open
github-actions[bot] wants to merge 1 commit into
branch-4.0from
auto-pick-64604-branch-4.0
Open

branch-4.0: [fix](be) Protect tablet writer map lookup in load channel #64604#64751
github-actions[bot] wants to merge 1 commit into
branch-4.0from
auto-pick-64604-branch-4.0

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Cherry-picked from #64604

@hello-stephen

Copy link
Copy Markdown
Contributor

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@hello-stephen

Copy link
Copy Markdown
Contributor

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 86.67% (13/15) 🎉

Increment coverage report
Complete coverage report

CategoryCoverage
Function Coverage71.52% (25542/35714)
Line Coverage54.41% (270986/498071)
Region Coverage51.99% (224564/431924)
Branch Coverage53.46% (96757/180999)

@github-actionsgithub-actionsBot added the approved Indicates a PR has been approved by one committer. label Jun 24, 2026
@github-actions

Copy link
Copy Markdown
ContributorAuthor

PR approved by at least one committer and no changes requested.

@github-actions

Copy link
Copy Markdown
ContributorAuthor

PR approved by anyone and no changes requested.

### What problem does this PR solve?
Issue Number: None
Related PR: #57133
Problem Summary:
`BaseTabletsChannel::_write_block_data` can run concurrently with
`incremental_open` for the same tablets channel. `_tablet_writers` is an
`std::unordered_map` protected by `_tablet_writers_lock` when writers
are inserted, but the tablet load rowset info lookup read the map
without holding the lock.
A concurrent `emplace` may rehash `_tablet_writers`, so the unlocked
lookup can race with bucket reallocation. This patch protects the lookup
with `_tablet_writers_lock` and avoids using unordered_map iterators
after the lock is released. The actual writer operations still run
outside `_tablet_writers_lock`, so the lock remains scoped to the map
access.
@morrySnow
morrySnowforce-pushed the auto-pick-64604-branch-4.0 branch from 6eaec98 to 5929700CompareAugust 31, 2026 07:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approvedIndicates a PR has been approved by one committer.reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hello-stephen@morningman@0AyanamiRei