Uh oh!
There was an error while loading. Please reload this page.
branch-4.1: [feature](cloud) Add table-level event-driven warm up (#63832) - #64602
Merged
Conversation
hello-stephen
commented
Jun 17, 2026
Contributor
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
bobhan1force-pushed
the
branch-4.1-pick-63832
branch
2 times, most recently
from
June 17, 2026 06:04
62c994a to
66f4060Comparebobhan1
marked this pull request as ready for review
June 17, 2026 06:04
bobhan1
commented
Jun 17, 2026
ContributorAuthor
run buildall |
hello-stephen
commented
Jun 17, 2026
Contributor
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
Issue Number: None Problem Summary: This PR adds table-level event-driven cloud warm-up support and improves active incremental warm-up progress observability. Before this change, event-driven warm-up was only controlled at compute-group granularity. Once a load-event warm-up job was enabled for a source and target compute group pair, all source-side table writes could trigger warm-up to the target compute group. That is inefficient for workloads where only selected core tables, high-frequency query tables, or selected async materialized views need to stay warm. This PR lets users define the warm-up scope with `ON TABLES` when creating an event-driven load warm-up job. FE persists the normalized table filter in the warm-up job, resolves matched table ids dynamically, sends the table ids to BE, and lets BE filter warm-up rowsets by table id. User-visible behavior: - `WARM UP ... ON TABLES` supports table-level event-driven warm-up. - Table filters support `INCLUDE` and `EXCLUDE` rules. - Rules support `*` and `?` wildcards, for example `db.table`, `db.*`, `*.orders_*`, and `log_db.log_?`. - `INCLUDE` defines the candidate warm-up scope, and `EXCLUDE` removes tables from that included scope. - Rules are canonicalized before duplicate checks, so semantically equivalent filters do not create duplicate jobs just because rule order differs. - Matching covers both regular OLAP tables and async materialized views. - Matched table ids are refreshed as tables or async materialized views are created, dropped, or renamed. - The same source compute group can create independent table-level warm-up jobs to different target compute groups with different table filters. - `SHOW WARM UP JOB` exposes the table-level job type, table filter, matched tables, and SyncStats. - `SHOW WARM UP JOB` list output keeps compact SyncStats, while single-job lookup keeps detailed windowed SyncStats. Example: ```sql WARM UP COMPUTE GROUP query_cg WITH COMPUTE GROUP write_cg ON TABLES ( INCLUDE 'core_db.config', INCLUDE 'report_db.monthly_*', INCLUDE '*.sales_*', EXCLUDE '*.*_archive' ) PROPERTIES ( "sync_mode" = "event_driven", "sync_event" = "load" ); ``` Conflict and virtual compute group behavior: - Table-level load-event warm-up and cluster-level load-event warm-up are mutually exclusive for the same source and target compute group pair. - If a conflicting job already exists, creation returns an error that includes the conflicting job id; table-level conflicts also include the table filter. - Duplicate checks within the same job type still follow the existing duplicate-check logic. - VCG-managed cluster-level load-event warm-up creation does not fail on conflict. Because VCG jobs are created by the MS HTTP API path, FE cancels existing table-level load-event warm-up jobs with the same source and target first, then recreates the VCG-managed cluster-level job. - Manually creating a table-level load-event warm-up job is rejected only when both source and target compute groups are owned by the same VCG. - SQL still cannot use a virtual compute group directly as the source or target compute group. Warm-up progress observation: - BE records per-job windowed requested, finished, and failed warm-up statistics. - BE exposes per-job warm-up statistics through `/api/warmup_event_driven_stats`. - FE aggregates BE statistics and caches the aggregated result in the warm-up job. - SyncStats includes source-side and target-side warm-up size/count progress across windows. - SyncStats includes trigger-time progress, so users can observe whether the target compute group is behind the latest source-side warm-up trigger. - FE `/metrics` exposes per-job active warm-up metadata, synchronized size, and trigger gap metrics for cloud event-driven warm-up jobs. Support table-level event-driven cloud warm-up with `ON TABLES` filters and per-job warm-up sync statistics. - Test - [x] Regression test - [x] Unit Test - [x] Manual test - [ ] 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 - Behavior changed: - [ ] No. - [x] Yes. `WARM UP` supports table-level `ON TABLES` filters for event-driven load warm-up, and warm-up job output/metrics expose table filter, matched tables, SyncStats, and trigger-gap information. - Does this need documentation? - [ ] No. - [x] Yes. apache/doris-website#3829
bobhan1force-pushed
the
branch-4.1-pick-63832
branch
from
June 18, 2026 09:02
66f4060 to
8f2a3e6Comparebobhan1
commented
Jun 18, 2026
ContributorAuthor
run buildall |
hello-stephen
commented
Jun 18, 2026
Contributor
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Jun 18, 2026
Contributor
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Jun 18, 2026
Contributor
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
hello-stephen
commented
Jun 18, 2026
Contributor
FE Regression Coverage ReportIncrement line coverage |
yiguolei
approved these changes
Jun 22, 2026
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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.
Proposed changes
Backport #63832 to
branch-4.1: add table-level event-driven warm-up support and related FE/BE metrics, parsing, show output, and regression coverage.This backport also includes a small
doris-composecompatibility fix for this branch so the cloud docker regression runner can acceptup --envand initializeexternal_ms_clusterbefore cloud cluster setup. Without it, the docker suites fail during compose argument handling before product code is exercised.Validation
git diff HEAD^ HEAD --check./run-be-ut.sh --clean --run --coverage --filter=CloudWarmUpManagerTest.*:CloudWarmUpManagerFilterTest.*:MBvarWindowedAdderTest.* -j100./run-fe-ut.sh --run org.apache.doris.cloud.CacheHotspotManagerTableFilterTest,org.apache.doris.cloud.CloudWarmUpJobTableFilterTest,org.apache.doris.cloud.OnTablesFilterTest,org.apache.doris.cloud.WarmUpClusterOnTablesParseTest,org.apache.doris.cloud.WarmUpStatsTest,org.apache.doris.cloud.catalog.CloudInstanceStatusCheckerTest,org.apache.doris.metric.MetricsTest./build.sh --be --fe --cloud -j100docker build -f docker/runtime/doris-compose/Dockerfile -t bh-cluster-2 .DORIS_FDB_IMAGE=foundationdb/foundationdb:7.1.26-single-layer ./run-regression-test.sh --run -d regression-test/suites/cloud_p0/cache/multi_cluster/warm_up/on_tables -runMode=cloud -dockerSuiteParallel 1 -image bh-cluster-2Test 19 suites, failed 0 suites, fatal 0 scripts, skipped 0 scripts