Uh oh!
There was an error while loading. Please reload this page.
[opt](nereids) optimize bs downgrade alg. - #56279
Conversation
Thearas
commented
Sep 22, 2025
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
englefly
commented
Sep 22, 2025
run buildall |
hello-stephen
commented
Sep 22, 2025
FE Regression Coverage ReportIncrement line coverage |
englefly
commented
Sep 25, 2025
run buildall |
doris-robot
commented
Sep 25, 2025
TPC-DS: Total hot run time: 188638 ms |
doris-robot
commented
Sep 25, 2025
ClickBench: Total hot run time: 30.09 s |
hello-stephen
commented
Sep 25, 2025
FE UT Coverage ReportIncrement line coverage |
hello-stephen
commented
Sep 25, 2025
FE Regression Coverage ReportIncrement line coverage |
englefly
commented
Sep 28, 2025
run p0 |
hello-stephen
commented
Sep 28, 2025
FE Regression Coverage ReportIncrement line coverage |
PR approved by at least one committer and no changes requested. |
PR approved by anyone and no changes requested. |
Uh oh!
There was an error while loading. Please reload this page.
### What problem does this PR solve? PR#36784: Bucket shuffle join shall be disabled if the number of scan instances for the left table of the join is less than 10. The value "10" should not be hardcoded here; instead, it should be calculated based on the cluster size. This PR will replace the fixed value "10" with a dynamic value equal to 0.8 times the maximum concurrency of the cluster.
…n prune_bucket_with_bucket_shuffle_join Root cause: the second extractFragment asserts RIGHT OUTER JOIN(BUCKET_SHUFFLE) under the new distribute planner, but the bucket-shuffle downgrade heuristic ChildrenPropertiesRegulator.isBucketShuffleDownGrade (totalBucketNum < backEndNum*paraNum*0.8) fires on the CloudP0 agent: the left side prunes to 1 partition x 10 buckets = 10, backEndNum=1, and with the default parallel_pipeline_task_num=0 paraNum auto-derives to 16 on the 32-core BE, so 10 < 1*16*0.8 = 12.8 -> downgrade -> PARTITIONED. The join is then labeled PARTITIONED, never BUCKET_SHUFFLE, so all 120 retries fail (~128s, muted). This became reachable after apache#56279 (302ba2e) replaced the old Math.min(10, backEndNum*paraNum) cap with the *0.8 formula; the var is also fuzzy, an additional flake source. Solution: set parallel_pipeline_task_num=1 in the second-phase multi_sql so paraNum=1 and the threshold becomes 10 < 0.8 (false) -> no downgrade -> BUCKET_SHUFFLE kept deterministically, independent of BE core count and fuzz. Bucket pruning (tablet<20), exchangeNum==1 and result correctness are unaffected. Tests: existing suite is the test (CloudP0 e2e, CI-gated). TEST-only, no product change; apache#56279's formula is intentional and left as-is. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
What problem does this PR solve?
PR#36784: Bucket shuffle join shall be disabled if the number of scan instances for the left table of the join is less than 10.
The value "10" should not be hardcoded here; instead, it should be calculated based on the cluster size. This PR will replace the fixed value "10" with a dynamic value equal to 0.8 times the maximum concurrency of the cluster.
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
Release note
None
Check List (For Author)
Test
Behavior changed:
Does this need documentation?
Check List (For Reviewer who merge this PR)