Uh oh!
There was an error while loading. Please reload this page.
branch-4.1: pick some prs - #61981
Conversation
Thearas
commented
Apr 1, 2026
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
bobhan1
commented
Apr 1, 2026
run buildall |
bobhan1
commented
Apr 1, 2026
run buildall |
1 similar comment
bobhan1
commented
Apr 1, 2026
run buildall |
hello-stephen
commented
Apr 1, 2026
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
JNSimba
commented
Apr 1, 2026
run buildall |
…r txn commit without fetching from meta service (apache#59754) 1FE+3BE, 400bucket mow table, 10 concurrency stream load before: <img width="3218" height="1300" alt="image" src="https://github.com/user-attachments/assets/3d4fe51d-4fae-484b-a257-a6b5ec010970" /> after: <img width="3206" height="1304" alt="image" src="https://github.com/user-attachments/assets/e7230b3c-999d-407b-aa57-783492995e5b" /> --- Problem Summary In cloud storage mode, after a load transaction commits rowsets to Meta Service (MS), BE nodes need to fetch the committed rowset metadata from MS during subsequent sync_rowsets() operations. This introduces additional latency and MS query overhead, especially for high-frequency import scenarios. This PR implements a notification mechanism where FE/BE directly notifies BE nodes about committed rowsets after transaction commit, allowing BE to update tablet metadata immediately without fetching from MS. Solution 1. CloudCommittedRSMgr (BE): A new in-memory manager that caches committed temporary rowset metadata after they are committed to MS - Stores rowset meta with expiration time - Supports efficient lookup by (txn_id, tablet_id) - Handles empty rowset markers - Background thread for cleaning expired entries 2. Notification Flow: - When FE commits a load transaction to MS, it sends MakeCloudTmpRsVisibleTask to involved BE nodes - BE receives the task with final version/visible_ts information - BE promotes cached rowset metadata to tablet meta directly - BE can forward notification to FE if needed (for tablets not on the original BE) 3. Configuration: - FE: enable_cloud_notify_be_after_load_txn_commit (default: false) - BE: enable_cloud_make_rs_visible_on_be (default: false) - BE: cloud_make_committed_rs_visible_worker_count (default: 4) - BE: cloud_mow_sync_rowsets_when_load_txn_begin (default: true) Benefits - Reduces Meta Service query pressure by avoiding redundant rowset metadata fetches - Improves import latency by making rowsets visible faster - Optimizes cloud storage mode performance for high-frequency imports
…t is not in `_rowset_warm_up_states` (apache#61238) In the freshness tolerance query path, when a BE restarts during rowset warmup, the warmup requests from the upstream BE are lost, leaving some rowsets with no entry in `_rowset_warm_up_states`. Previously, `is_rowset_warmed_up()` returned `false` for such rowsets, treating them as "not warmed up". This becomes problematic for **compaction-produced rowsets** whose `visible_timestamp` is set at rowset builder initialization time rather than at the final transaction commit time on meta-service. Their `visible_timestamp` can be **earlier** than `startup_timepoint`, causing the `startup_timepoint` filter to NOT skip them — they then reach `is_rowset_warmed_up()` with no warmup entry. If such a rowset sits before the cumulative compaction point and base compaction never happens, returning `false` causes the version path algorithm to exclude it, leading to a **persistently low `path_max_version`**. With continuous upstream ingestion, the freshness tolerance fallback check keeps triggering, making **every query on this tablet fall back to reading all data from remote storage** — effectively defeating the cache entirely. ### Solution Change `is_rowset_warmed_up()` to return `true` (optimistically treat as warmed up) when a rowset has no entry in `_rowset_warm_up_states`. This allows the version path algorithm to include such rowsets normally. On cache miss, data is transparently read from remote storage per-segment and cached locally in 1MB blocks, so the problem **self-heals** through subsequent queries. A bvar counter (`rowset_warmup_state_missing_count`) and a throttled WARNING log are added for observability. ### Changes - `CloudTablet::is_rowset_warmed_up()`: return `true` instead of `false` when the rowset is not found in `_rowset_warm_up_states` - Add `rowset_warmup_state_missing_count` bvar for monitoring: counts the number of times a rowset's warmup state is missing from `_rowset_warm_up_states`. A non-zero value indicates that some rowsets lost their warmup entries (e.g. due to BE restart during warmup) and were optimistically treated as warmed up. Sustained growth may indicate frequent BE restarts or warmup instability. - Add `add_not_warmed_up_rowset()` test helper to explicitly mark rowsets as not warmed up (DOING state) for unit tests - Fix existing UTs that relied on absence from the warmup map to mean "not warmed up"
ccba3b5 to
7c28474Comparebobhan1
commented
Apr 1, 2026
run buildall |
doris-robot
commented
Apr 1, 2026
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
bobhan1
commented
Apr 1, 2026
run beut |
bobhan1
commented
Apr 1, 2026
run p0 |
bobhan1
commented
Apr 1, 2026
run external |
bobhan1
commented
Apr 1, 2026
run nonConcurrent |
hello-stephen
commented
Apr 1, 2026
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Apr 1, 2026
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Apr 1, 2026
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
Uh oh!
There was an error while loading. Please reload this page.
_rowset_warm_up_states#61238