Skip to content

[feat](load) support cross-AZ minimum success replica quorum on load commit - #66680

Open
deardeng wants to merge 2 commits into
apache:masterfrom
deardeng:impl-quorum-load
Open

[feat](load) support cross-AZ minimum success replica quorum on load commit#66680
deardeng wants to merge 2 commits into
apache:masterfrom
deardeng:impl-quorum-load

Conversation

@deardeng

@deardeng deardeng commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Add a cluster-level FE config cross_az_succ_quorum (format az1:2,az2:1, empty by default) requiring, per tablet, a minimum number of successfully written replicas in each availability zone before a load transaction may commit. It only tightens the existing commit condition, never relaxes it; the default empty value keeps today's behavior unchanged and costs nothing on the commit path.

The requirement of each AZ is clamped to the replicas the tablet actually has there:

required_in_az = min(configured, replica_num_in_az)

A tablet with no replica in a configured AZ (single-AZ tables, backends without a location tag) is therefore skipped, and a table whose replica distribution cannot reach the configured value degrades instead of becoming permanently unloadable. This mirrors how min_load_replica_num is clamped in OlapTable#getLoadRequiredReplicaNum.

FE enforces it in DatabaseTransactionMgr#checkCommitStatus, the single choke point shared by the 2PC pre-commit, ordinary commit and sub-transaction commit paths.

BE's quorum success write is made AZ aware as well. Without that, a merely slow replica is dropped from the reported success set once the ordinary majority is reached; in a cross-AZ deployment the systematically slowest replica is the remote-AZ one, so the FE check would reject healthy loads. Two optional thrift fields carry what BE needs -- TNodeInfo.location and TOlapTableSink.cross_az_succ_quorum -- both sent only when the config is non-empty, so an old BE simply ignores them and falls back to the FE-only check. BE applies the identical clamp in
DorisNodesInfo#is_cross_az_quorum_success, shared by the v1 and v2 tablet writers. Replicas with a version gap are excluded from the success count on both sides.

Applies to the integrated storage-compute mode only; cloud mode commits through CloudGlobalTransactionMgr and never reaches this check.

Do not enable cross_az_succ_quorum until all potential coordinator BEs have been upgraded.

What problem does this PR solve?

Issue Number: close #xxx

Related PR: #xxx

Problem Summary:

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • 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
  • Behavior changed:

    • No.
    • Yes.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@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?

@deardeng

Copy link
Copy Markdown
Contributor Author

run buildall

@deardeng

Copy link
Copy Markdown
Contributor Author

/review

@deardeng

Copy link
Copy Markdown
Contributor Author

run buildall

@github-actions

Copy link
Copy Markdown
Contributor

Codex automated review failed and did not complete.

Error: Codex completed, but no new pull request review was submitted for the current head SHA.
Workflow run: https://github.com/apache/doris/actions/runs/31572482207

Please inspect the workflow logs and rerun the review after the underlying issue is resolved.

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 77.27% (34/44) 🎉
Increment coverage report
Complete coverage report

…commit

Add a cluster-level FE config `cross_az_succ_quorum` (format `az1:2,az2:1`,
empty by default) requiring, per tablet, a minimum number of successfully
written replicas in each availability zone before a load transaction may
commit. It only tightens the existing commit condition, never relaxes it; the
default empty value keeps today's behavior unchanged and costs nothing on the
commit path.

The requirement of each AZ is clamped to the replicas the tablet actually has
there:

    required_in_az = min(configured, replica_num_in_az)

A tablet with no replica in a configured AZ (single-AZ tables, backends
without a location tag) is therefore skipped, and a table whose replica
distribution cannot reach the configured value degrades instead of becoming
permanently unloadable. This mirrors how `min_load_replica_num` is clamped in
OlapTable#getLoadRequiredReplicaNum.

FE enforces it in DatabaseTransactionMgr#checkCommitStatus, the single choke
point shared by the 2PC pre-commit, ordinary commit and sub-transaction commit
paths.

BE's quorum success write is made AZ aware as well. Without that, a merely
slow replica is dropped from the reported success set once the ordinary
majority is reached; in a cross-AZ deployment the systematically slowest
replica is the remote-AZ one, so the FE check would reject healthy loads. Two
optional thrift fields carry what BE needs -- `TNodeInfo.location` and
`TOlapTableSink.cross_az_succ_quorum` -- both sent only when the config is
non-empty, so an old BE simply ignores them and falls back to the FE-only
check. BE applies the identical clamp in
DorisNodesInfo#is_cross_az_quorum_success, shared by the v1 and v2 tablet
writers. Replicas with a version gap are excluded from the success count on
both sides.

Applies to the integrated storage-compute mode only; cloud mode commits
through CloudGlobalTransactionMgr and never reaches this check.
@deardeng

Copy link
Copy Markdown
Contributor Author

run buildall

@deardeng

Copy link
Copy Markdown
Contributor Author

/review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Request changes: five blocking issues remain after the third and final review round. The accepted findings are: (1) both BE writers use destination completion instead of tablet-level success for the new AZ gate; (2) malformed configuration updates succeed and silently weaken or disable the durability fence; (3) the dynamic array/cache protocol does not safely publish updates to planner/commit threads; (4) remote Doris inserts have neither the target policy nor target backend locations in their planning metadata; and (5) new-FE/old-coordinator rolling deployments decode the optional fields but still reject healthy slow-AZ loads. Each is detailed inline.

Critical checkpoints:

  • Goal, accomplishment, and proof: the goal is a per-tablet, per-AZ minimum-success durability fence with coordinated BE waiting and FE commit enforcement. The ordinary local path is implemented and the added tests exercise local commit rejection, clamping, a slow AZ, min_load_replica_num, and part of v2 waiting. The five findings show the goal is not yet met across failure, dynamic-config, remote, and rolling-upgrade paths.
  • Scope and focus: the patch is reasonably focused, but the contract is distributed across configuration, planning, two BE writers, transaction commit, remote metadata, and thrift compatibility; the current small local changes do not cover those required boundaries. The user supplied no additional focus beyond full review.
  • Concurrency: mutable-config updates race with planner and commit readers. The raw String[] is reflectively written under ConfigBase.class, read without that monitor, and the slow path locks Config.class; this is MAIN-003. No new lock-order or deadlock issue was found.
  • Lifecycle and statics: no C++ static-initialization or ownership issue was found. The Java identity cache lifecycle is incorrect because its source reference is not safely published; that is covered by MAIN-003.
  • Configuration: the setting is dynamic, but invalid values are accepted fail-open (MAIN-002), and successful updates need atomic publication (MAIN-003). Zero values and per-tablet clamping are intentional.
  • Compatibility: the new thrift fields are wire-compatible in both directions, and old-FE/new-BE preserves the default behavior. New-FE/old-BE is not behaviorally compatible once a nonempty policy is activated, because the old coordinator cannot perform the slow-AZ wait (MAIN-007).
  • Parallel and special paths: v1 and v2 are both changed but both share MAIN-001. Ordinary commit, onlyCommit, subtransactions, 2PC precommit/final prepared-state handling, group commit's second master-planned writer, auto/replace-partition callbacks, cloud's one-replica topology, and target remote commit were traced. Remote planning remains broken (MAIN-005); no additional local commit bypass survived.
  • Conditions and errors: the AZ clamp matches FE/BE and missing tablet/node objects are rejected during writer initialization. Catching malformed policy items and continuing is not valid at a durability boundary (MAIN-002).
  • Tests and results: coverage omits v1 and completed per-tablet failures, concurrent config publication, target remote policy/location provenance, and new-FE/old-BE activation. The invalid-config tests currently codify the fail-open result. Per the review bundle, no local build or test was run. Current CI shows compile, CheckStyle, and Clang Formatter passing; FE UT is failing, its linked log requires authorization, and BE/regression jobs are still pending.
  • Observability: commit failures include transaction/tablet/AZ detail. Logging and ignoring an invalid update is insufficient because the administrative operation still reports success; no separate metrics blocker was found.
  • Transactions, persistence, and failover: FE remains the authoritative commit fence and prevents an under-protected commit when it observes the policy. 2PC final commit correctly consumes the already-validated prepared state, and no new EditLog or master-failover defect was substantiated. MAIN-002/003 can nevertheless make the authoritative fence weaker or stale, and MAIN-005 splits policy provenance across clusters.
  • Write atomicity and crashes: the existing commit protocol remains atomic; no new crash leak or visibility-version inconsistency was found. The accepted defects either weaken the intended durability rule or reject healthy loads after BE prematurely abandons a usable replica.
  • FE/BE variable transfer: normal local sinks carry both optional fields, but remote backend metadata has no location and uses the source FE policy (MAIN-005); mixed-version coordinator capability is not fenced (MAIN-007).
  • Performance: cached parsing and the per-tablet replica scans are bounded/linear and no material CPU, memory, or allocation regression was found.
  • Other issues and completion: live review threads/comments were empty, all candidates were deduplicated, and the third/final round converged with every reviewer returning NO_NEW_VALUABLE_FINDINGS after two false positives were removed. The review is complete, not capped/incomplete.

Comment thread be/src/exec/sink/writer/vtablet_writer.cpp
Comment thread fe/fe-common/src/main/java/org/apache/doris/common/Config.java
Comment thread fe/fe-common/src/main/java/org/apache/doris/common/Config.java
Comment thread gensrc/thrift/DataSinks.thrift
### What problem does this PR solve?

Issue Number: close #xxx

Related PR: apache#66680

Problem Summary: Cross-AZ quorum checks treated a finished backend or stream destination as successful for every tablet, even when that destination reported a tablet-level failure. This could let a load return quorum success without the configured number of successful replicas in an availability zone. Count only finished destinations that actually succeeded for each tablet in both writer implementations, safely publish dynamic FE updates to cross_az_succ_quorum, and add regression coverage for both writers.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - `./run-be-ut.sh --run --filter=TestVTabletWriterV2.* -j 16` (19 tests passed)
    - `mvn checkstyle:check -pl fe-common` (passed)
    - `build-support/check-format.sh` with clang-format 16 (passed)
    - `build-support/run-clang-tidy.sh --build-dir be/ut_build_ASAN` (attempted; blocked by pre-existing diagnostics and a toolchain stddef.h lookup error)
- Behavior changed: Yes, cross-AZ quorum now counts tablet-level write success and dynamic FE config updates are safely published across threads.
- Does this need documentation: No
@deardeng

Copy link
Copy Markdown
Contributor Author

run buildall

@deardeng

Copy link
Copy Markdown
Contributor Author

/review

@hello-stephen

Copy link
Copy Markdown
Contributor

FE Regression Coverage Report

Increment line coverage 2.54% (3/118) 🎉
Increment coverage report
Complete coverage report

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Request changes: the authoritative FE gate prevents an under-replicated AZ result from being committed, but the end-to-end implementation can still reject or time out healthy loads in five supported lifecycle paths. The inline comments cover five distinct roots.

Critical checkpoint conclusions:

  • Goal and data correctness: stable single-owner INSERT cases are covered, but the feature is not correct across in-flight policy/topology changes, multi-sender/source result ownership, staged auto-partition close, and transient replica repair. The failures occur before FE commit persistence, so I found no new invalid-data visibility or partition-version corruption path; the substantiated impact is healthy-load rejection, timeout, or premature replica cancellation.
  • Scope and design: the diff is focused, but the contract spans planner metadata, optional Thrift fields, two BE writer protocols, and authoritative transaction validation. Correctness needs one immutable policy/topology/load-target epoch and a final tablet-result owner visible to every quorum evaluator.
  • Concurrency and lifecycle: config and backend-tag updates are not covered by the transaction/table lock, which creates the snapshot mismatch. Writer result containers are lock-protected, but their final outcomes are sender/source-local. The initial/incremental close ordering and scheduler-added CLONE state create two further lifecycle failures. No additional lock-order, deadlock, use-after-free, or static-initialization issue was substantiated.
  • Configuration and compatibility: the volatile config source publishes each individual update, but it does not make planning and commit one snapshot. The appended optional Thrift fields decode compatibly. Existing live threads already cover malformed-config fail-open behavior, remote-insert metadata, and new-FE/old-BE activation; I did not duplicate them.
  • Parallel paths, transactions, and persistence: ordinary, stream, routine, broker, and group-commit routing, plus ordinary commit, 2PC precommit/finalization, subtransactions, replay, failover, schema-change/rollup tablets, and the cloud-manager split were traced. Every fresh shared-nothing commit reaches the FE check before PRECOMMITTED/COMMITTED persistence; no independent commit bypass or EditLog defect was found.
  • Error handling, performance, and observability: rejection errors contain transaction, tablet, table, partition, AZ, counts, and replica detail. Enabled-path scans are bounded in-memory work and backend tags are cached per check. I found no separate unchecked-status, heavy-I/O-under-lock, hot-path, or observability blocker.
  • Tests: the added tests cover stable AZ failure/success, physical clamping, slow replicas, version gaps, parser caching, and lowered load quorum. They do not cover in-flight enable/disable or retagging, multi-sender v1 results, multi-source v2 results, mixed initial/incremental auto-partition close, or a loadable replica plus CLONE; those gaps correspond directly to the five inline findings.
  • User focus and completion: no additional user-provided review focus was supplied. The review converged in round 2: all normal and risk-focused reviewers returned NO_NEW_VALUABLE_FINDINGS, every candidate was adjudicated, and five distinct findings remain accepted. No builds or tests were run because this review environment disallows them.

TabletInvertedIndex tabletInvertedIndex = env.getTabletInvertedIndex();
Map<Long, Set<Long>> tabletToBackends = new HashMap<>();
Map<Long, Table> idToTable = new HashMap<>();
Map<String, Integer> crossAzSuccQuorum = Config.getCrossAzSuccQuorum();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This rereads a mutable policy and live backend locations at commit, but BE close waiting used the policy and locations serialized when the sink was planned. A reachable failure is: plan with the default empty config, delay the only az2 replica, then enable az1:2,az2:1 before close/commit. BE has no AZ gate and may stop after the two az1 replicas; this fresh read then requires az2 and rejects an otherwise healthy load that would have succeeded if BE kept waiting. Disabling the config or changing a location tag in flight creates the inverse mismatch, and the separate reads inside setNodesInfo can even pair an enabled policy with location-less nodes. Please bind one immutable policy/location snapshot to the transaction/load and use it for node construction, sink metadata (including auto-partition updates), and FE validation; add blocked in-flight enable/disable coverage.

const auto failed_it = _failed_channels.find(tablet_id);
for (int64_t node_id : tablet->node_ids) {
if (finished_node_ids.contains(node_id) &&
(failed_it == _failed_channels.end() ||

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This still treats absence from this sender's _failed_channels as tablet success, but non-final senders never receive the final tablet outcome. TabletsChannel::close returns them OK with empty tablet_errors/tablet_vec; only the sender that closes the receiver last gets commit errors, and hang_wait does not copy that response back. Thus an earlier sender can count a destination whose tablet later fails in a required AZ, enter the bounded post-quorum wait, and cancel the only slow healthy replica before FE rejects. Please publish the final per-tablet result to every sender that evaluates quorum (or centralize the decision) and add a two-sender v1 case where the non-final sender closes first.

if (finished) {
finished_dst_ids.insert(dst_id);
if (table_sink.__isset.cross_az_succ_quorum) {
for (int64_t tablet_id : streams->success_tablets()) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

success_tablets() is source-local, but the destination sends final tablet IDs only on whichever source's CLOSE_LOAD arrives last. Earlier sources receive an empty EOS and are only stream-closed later; the existing two-client load-stream test even expects only the second client to get the tablet ID. Consequently another source can have ordinary quorum and a genuinely satisfied AZ requirement, yet keep waiting for an unrelated slow destination because this map is empty, eventually timing out instead of using quorum close. Please share/broadcast final tablet outcomes to every source that evaluates this predicate (or evaluate it at the aggregated owner) and add a multi-source v2 close test.

return false;
}
}
if (table_sink.__isset.cross_az_succ_quorum) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This enforces the full AZ requirement during _close_wait(_non_incremental_streams(), false), before incremental streams are sent CLOSE_LOAD. For an auto-created tablet whose required-AZ success is available only on an incremental destination, that success cannot exist in this stage; if any extra initial stream is slow, the loop cannot use quorum and can run to the query timeout before reaching close_load(true). The v1 two-stage path has the same dependency. Please make the first-stage fence depend only on evidence that can finish in that stage and enforce the full AZ rule in the final all-stream wait; add auto-partition tests for both writers.

for (Entry<String, Integer> entry : crossAzSuccQuorum.entrySet()) {
String az = entry.getKey();
int replicaNumInAz = 0;
for (long backendId : tabletBackends) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tabletBackends includes every replica object, including a scheduler-added CLONE, but load planning excludes CLONE because it cannot load. With one allocated az1 replica and az1:2, a same-AZ repair/balance temporarily leaves the loadable replica plus the new CLONE here, so requiredInAz becomes 2 although only one replica was a write target; every otherwise valid load is rejected until cloning finishes. Please clamp against the declared/logical replica allocation (or another count that excludes transient extra replicas) and add a one-replica-plus-CLONE test.

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 28649 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 4a5cd75cec5ad82cfce5f0f8a550b5488ada0319, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17441	3968	3980	3968
q2	1993	321	210	210
q3	10133	1395	777	777
q4	4671	468	334	334
q5	7572	848	543	543
q6	190	169	134	134
q7	743	795	602	602
q8	9382	1516	1523	1516
q9	5280	4071	3974	3974
q10	6766	1625	1345	1345
q11	515	352	327	327
q12	722	599	447	447
q13	18104	3229	2716	2716
q14	267	258	232	232
q15	q16	735	730	655	655
q17	1045	998	1044	998
q18	6576	5603	5571	5571
q19	1343	1286	1089	1089
q20	849	734	556	556
q21	5872	2593	2363	2363
q22	426	348	292	292
Total cold run time: 100625 ms
Total hot run time: 28649 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4298	4183	4197	4183
q2	272	329	209	209
q3	4502	4935	4363	4363
q4	2161	2254	1417	1417
q5	4193	4090	4147	4090
q6	232	174	127	127
q7	1737	1591	1380	1380
q8	2442	2184	2112	2112
q9	7309	7139	7151	7139
q10	4299	4239	3842	3842
q11	576	402	383	383
q12	704	721	502	502
q13	3185	3428	3112	3112
q14	297	290	275	275
q15	q16	690	724	657	657
q17	1305	1289	1271	1271
q18	12178	10979	11872	10979
q19	1229	1153	1147	1147
q20	2227	2241	1975	1975
q21	5621	4867	4807	4807
q22	508	485	407	407
Total cold run time: 59965 ms
Total hot run time: 54377 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 158278 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 4a5cd75cec5ad82cfce5f0f8a550b5488ada0319, data reload: false

query5	4313	589	464	464
query6	479	222	200	200
query7	4889	610	343	343
query8	319	155	163	155
query9	8763	4005	4038	4005
query10	450	354	318	318
query11	5867	2156	2031	2031
query12	152	96	92	92
query13	1279	608	423	423
query14	6109	4260	3972	3972
query14_1	3751	3782	3746	3746
query15	202	187	177	177
query16	956	467	445	445
query17	915	698	527	527
query18	2418	450	329	329
query19	206	187	170	170
query20	101	106	99	99
query21	226	160	131	131
query22	13051	13143	12816	12816
query23	15655	14990	14525	14525
query23_1	14686	14566	14753	14566
query24	7575	1722	1228	1228
query24_1	1250	1209	1243	1209
query25	531	411	392	392
query26	1315	366	218	218
query27	2586	566	371	371
query28	4567	2027	1998	1998
query29	1046	602	454	454
query30	343	262	228	228
query31	1164	1117	1040	1040
query32	111	64	60	60
query33	507	310	235	235
query34	1196	1122	633	633
query35	739	755	644	644
query36	775	796	696	696
query37	160	110	90	90
query38	1820	1766	1663	1663
query39	822	821	793	793
query39_1	810	783	773	773
query40	241	162	145	145
query41	73	74	71	71
query42	99	96	121	96
query43	313	323	272	272
query44	1392	763	769	763
query45	189	176	170	170
query46	1069	1177	707	707
query47	1506	1547	1477	1477
query48	417	425	303	303
query49	587	401	294	294
query50	1110	428	352	352
query51	10560	10511	10415	10415
query52	86	86	81	81
query53	268	275	200	200
query54	275	237	211	211
query55	76	72	67	67
query56	312	285	280	280
query57	1026	988	936	936
query58	309	249	260	249
query59	1524	1546	1348	1348
query60	316	271	259	259
query61	146	144	149	144
query62	393	322	268	268
query63	238	199	204	199
query64	2865	1082	958	958
query65	3863	3835	3795	3795
query66	1824	497	377	377
query67	20231	20194	20174	20174
query68	3205	1529	984	984
query69	413	315	266	266
query70	871	797	803	797
query71	371	345	321	321
query72	3189	2790	2486	2486
query73	862	731	438	438
query74	4596	4520	4322	4322
query75	2356	2340	1989	1989
query76	2335	1157	751	751
query77	340	366	271	271
query78	11179	11087	10482	10482
query79	1382	1156	745	745
query80	733	564	457	457
query81	468	325	285	285
query82	620	173	146	146
query83	404	330	293	293
query84	316	158	133	133
query85	940	595	522	522
query86	348	240	229	229
query87	1989	1964	1829	1829
query88	3713	2800	2784	2784
query89	381	314	285	285
query90	1870	206	191	191
query91	199	189	163	163
query92	64	62	55	55
query93	1610	1544	996	996
query94	602	347	313	313
query95	779	511	558	511
query96	1051	789	347	347
query97	2469	2464	2314	2314
query98	197	187	180	180
query99	741	741	613	613
Total cold run time: 244192 ms
Total hot run time: 158278 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 25.13 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 4a5cd75cec5ad82cfce5f0f8a550b5488ada0319, data reload: false

query1	0.00	0.00	0.01
query2	0.14	0.09	0.08
query3	0.36	0.24	0.25
query4	1.62	0.25	0.24
query5	0.33	0.31	0.31
query6	1.16	0.67	0.66
query7	0.04	0.01	0.01
query8	0.08	0.08	0.07
query9	0.49	0.39	0.38
query10	0.57	0.58	0.57
query11	0.31	0.18	0.18
query12	0.31	0.19	0.18
query13	0.52	0.53	0.51
query14	0.92	0.91	0.91
query15	0.67	0.59	0.59
query16	0.39	0.39	0.40
query17	0.98	1.02	1.00
query18	0.30	0.28	0.28
query19	1.96	1.83	1.78
query20	0.02	0.02	0.01
query21	15.42	0.39	0.32
query22	4.80	0.14	0.13
query23	15.81	0.50	0.30
query24	2.57	0.57	0.41
query25	0.16	0.11	0.10
query26	0.74	0.28	0.22
query27	0.09	0.09	0.10
query28	3.49	0.78	0.43
query29	12.54	4.18	3.21
query30	0.37	0.26	0.26
query31	2.79	0.60	0.33
query32	3.23	0.59	0.47
query33	2.96	2.97	2.95
query34	15.76	3.91	3.26
query35	3.14	3.17	3.17
query36	0.66	0.55	0.51
query37	0.13	0.10	0.09
query38	0.08	0.06	0.07
query39	0.07	0.05	0.06
query40	0.20	0.19	0.17
query41	0.13	0.08	0.08
query42	0.10	0.06	0.06
query43	0.07	0.07	0.07
Total cold run time: 96.48 s
Total hot run time: 25.13 s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants