Skip to content

Conversation

@morningman
Copy link
Contributor

@morningman morningman commented May 9, 2025

What problem does this PR solve?

Related PR: #34685

Problem Summary:

This PR #34685 introduced FEOpExecutor, which is just a copy of MasterOpExecutor.
Both class are used to forwarding request to a specific FE node, and there are lots of duplicate code.
So I refactor the code to let MasterOpExecutor extends from FEOpExecutor.

No logic being changed in this PR.

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

@morningman
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	25976	5116	5102	5102
q2	2074	278	186	186
q3	10426	1351	675	675
q4	10217	991	529	529
q5	7515	2343	2295	2295
q6	199	166	133	133
q7	899	739	618	618
q8	9296	1232	1017	1017
q9	6896	5038	5047	5038
q10	6850	2293	1874	1874
q11	492	278	270	270
q12	360	350	216	216
q13	17790	3624	3050	3050
q14	228	222	217	217
q15	524	487	490	487
q16	412	427	387	387
q17	603	840	382	382
q18	7538	7114	7104	7104
q19	1729	967	561	561
q20	333	322	220	220
q21	3949	3437	2454	2454
q22	988	981	965	965
Total cold run time: 115294 ms
Total hot run time: 33780 ms

----- Round 2, with runtime_filter_mode=off -----
q1	5248	5433	5116	5116
q2	245	330	230	230
q3	2152	2639	2275	2275
q4	1333	1744	1343	1343
q5	4438	4357	4390	4357
q6	220	163	129	129
q7	2023	1928	1757	1757
q8	2580	2589	2441	2441
q9	7283	7258	6942	6942
q10	3013	3161	2742	2742
q11	554	501	485	485
q12	679	762	654	654
q13	3546	3872	3207	3207
q14	267	289	273	273
q15	564	496	498	496
q16	466	467	440	440
q17	1158	1470	1392	1392
q18	7738	7599	7450	7450
q19	869	830	1024	830
q20	1966	2033	1830	1830
q21	5076	4803	4650	4650
q22	1080	1076	996	996
Total cold run time: 52498 ms
Total hot run time: 50035 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 191426 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 b9bca25f30498f4b2abc95e3de8aad3bdc8fb3c1, data reload: false

query1	1469	1093	1088	1088
query2	6257	1787	1794	1787
query3	10984	4337	4520	4337
query4	54036	24722	23069	23069
query5	5093	551	462	462
query6	380	206	191	191
query7	5031	492	282	282
query8	331	267	220	220
query9	6295	2551	2564	2551
query10	404	309	250	250
query11	15117	15019	14829	14829
query12	153	108	103	103
query13	1121	510	386	386
query14	10115	6360	6411	6360
query15	198	194	179	179
query16	7087	656	475	475
query17	1094	783	589	589
query18	1571	418	316	316
query19	206	227	175	175
query20	132	122	121	121
query21	221	129	112	112
query22	4285	4643	4239	4239
query23	34325	33412	33648	33412
query24	7036	2431	2409	2409
query25	485	484	416	416
query26	713	272	154	154
query27	2307	544	341	341
query28	3024	2135	2116	2116
query29	601	546	424	424
query30	272	213	190	190
query31	890	866	748	748
query32	75	62	65	62
query33	438	365	300	300
query34	793	892	501	501
query35	809	838	777	777
query36	968	1002	912	912
query37	117	100	75	75
query38	4157	4318	4193	4193
query39	1510	1454	1627	1454
query40	215	120	104	104
query41	55	52	50	50
query42	126	105	103	103
query43	513	503	481	481
query44	1385	822	817	817
query45	190	180	171	171
query46	845	1038	645	645
query47	1846	1867	1770	1770
query48	382	429	316	316
query49	690	517	418	418
query50	676	703	399	399
query51	4273	4267	4208	4208
query52	117	108	98	98
query53	239	268	193	193
query54	602	582	518	518
query55	92	87	79	79
query56	283	305	296	296
query57	1185	1173	1137	1137
query58	277	256	268	256
query59	2671	2765	2527	2527
query60	327	335	307	307
query61	139	121	126	121
query62	752	722	679	679
query63	231	189	191	189
query64	1928	1045	703	703
query65	4403	4193	4228	4193
query66	790	398	305	305
query67	15942	15732	15205	15205
query68	6760	884	522	522
query69	542	296	272	272
query70	1180	1117	1052	1052
query71	495	323	283	283
query72	5979	4727	4750	4727
query73	1329	624	342	342
query74	8968	8865	8752	8752
query75	3957	3212	2721	2721
query76	4292	1185	749	749
query77	646	361	286	286
query78	9977	10166	9314	9314
query79	2129	817	564	564
query80	708	512	437	437
query81	480	253	216	216
query82	475	130	97	97
query83	363	248	240	240
query84	303	101	80	80
query85	769	349	312	312
query86	370	289	289	289
query87	4389	4365	4367	4365
query88	3650	2282	2209	2209
query89	404	308	290	290
query90	1866	222	217	217
query91	141	135	107	107
query92	75	57	58	57
query93	1744	920	576	576
query94	660	396	301	301
query95	373	302	287	287
query96	490	562	278	278
query97	3198	3210	3109	3109
query98	238	204	198	198
query99	1450	1399	1284	1284
Total cold run time: 299674 ms
Total hot run time: 191426 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 28.71 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit b9bca25f30498f4b2abc95e3de8aad3bdc8fb3c1, data reload: false

query1	0.03	0.03	0.03
query2	0.12	0.10	0.12
query3	0.25	0.19	0.19
query4	1.59	0.18	0.20
query5	0.59	0.58	0.59
query6	1.16	0.72	0.73
query7	0.02	0.01	0.02
query8	0.04	0.04	0.03
query9	0.58	0.54	0.51
query10	0.57	0.57	0.57
query11	0.15	0.11	0.11
query12	0.15	0.12	0.12
query13	0.61	0.60	0.60
query14	0.78	0.79	0.80
query15	0.86	0.86	0.85
query16	0.37	0.38	0.38
query17	1.01	1.01	1.05
query18	0.21	0.20	0.20
query19	1.93	1.82	1.79
query20	0.01	0.01	0.02
query21	15.40	0.91	0.54
query22	0.75	1.22	0.68
query23	14.93	1.36	0.63
query24	7.62	1.21	0.37
query25	0.54	0.24	0.07
query26	0.68	0.16	0.14
query27	0.05	0.06	0.05
query28	8.50	0.91	0.43
query29	12.61	3.95	3.30
query30	0.25	0.09	0.07
query31	2.83	0.61	0.40
query32	3.24	0.57	0.47
query33	3.07	3.06	3.08
query34	15.74	5.07	4.46
query35	4.54	4.47	4.52
query36	0.65	0.50	0.48
query37	0.09	0.06	0.06
query38	0.05	0.04	0.04
query39	0.03	0.02	0.03
query40	0.17	0.13	0.12
query41	0.07	0.02	0.02
query42	0.04	0.02	0.03
query43	0.03	0.03	0.03
Total cold run time: 102.91 s
Total hot run time: 28.71 s

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label May 12, 2025
@github-actions
Copy link
Contributor

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

@github-actions
Copy link
Contributor

PR approved by anyone and no changes requested.

@morningman morningman merged commit 4ce95d3 into apache:master May 12, 2025
33 of 34 checks passed
morningman added a commit that referenced this pull request May 26, 2025
…50791)

### What problem does this PR solve?

Related PR: #50776, #46882

Problem Summary:

1. Fix bug that `KILL connection_id` is not supported in Nereids

This PR #46882 implements `KILL` in Nereids, but it miss the grammar
`KILL connection_id` and treat it as `KILL query_id`. This PR fix it.

2. Unify the core code of `KILL` operation in both old and new planner

All core logic about `kill` are moved to `KillUtils` class. So that both
old and new planner and can have same logic.

3. Support Kill query by query id from all FE

Previously, when executing `kill query query_id;`, Doris will only find
query id in current FE. If not found, Doris will send the cancel request
to all Backends to try cancelling this query.

In this PR, I changed the logic. Doris will first find query id in
current FE, if not found, this `kill` command will be forwarded to all
other Frontends to then find it in other FEs. And Doris will no longer
send the cancel request to Backend.

4. Support Kill query by trace id from all FE

User can set a custom `trace id` by `set
session_context="trace_id:your_trace_id"`. And this trace id will be
bind to the subsequent queries in this connection. Then user can cancel
the query by trace id:

    `KILL QUERY "trace_id"`

More details can be found in user doc:
apache/doris-website#2371
koarz pushed a commit to koarz/doris that referenced this pull request Jun 4, 2025
### What problem does this PR solve?

Related PR: apache#34685

Problem Summary:

This PR apache#34685 introduced `FEOpExecutor`, which is just a copy of
`MasterOpExecutor`.
Both class are used to forwarding request to a specific FE node, and
there are lots of duplicate code.
So I refactor the code to let `MasterOpExecutor` extends from
`FEOpExecutor`.

No logic being changed in this PR.
koarz pushed a commit to koarz/doris that referenced this pull request Jun 4, 2025
…pache#50791)

### What problem does this PR solve?

Related PR: apache#50776, apache#46882

Problem Summary:

1. Fix bug that `KILL connection_id` is not supported in Nereids

This PR apache#46882 implements `KILL` in Nereids, but it miss the grammar
`KILL connection_id` and treat it as `KILL query_id`. This PR fix it.

2. Unify the core code of `KILL` operation in both old and new planner

All core logic about `kill` are moved to `KillUtils` class. So that both
old and new planner and can have same logic.

3. Support Kill query by query id from all FE

Previously, when executing `kill query query_id;`, Doris will only find
query id in current FE. If not found, Doris will send the cancel request
to all Backends to try cancelling this query.

In this PR, I changed the logic. Doris will first find query id in
current FE, if not found, this `kill` command will be forwarded to all
other Frontends to then find it in other FEs. And Doris will no longer
send the cancel request to Backend.

4. Support Kill query by trace id from all FE

User can set a custom `trace id` by `set
session_context="trace_id:your_trace_id"`. And this trace id will be
bind to the subsequent queries in this connection. Then user can cancel
the query by trace id:

    `KILL QUERY "trace_id"`

More details can be found in user doc:
apache/doris-website#2371
morningman added a commit to morningman/doris that referenced this pull request Jun 19, 2025
Related PR: apache#34685

Problem Summary:

This PR apache#34685 introduced `FEOpExecutor`, which is just a copy of
`MasterOpExecutor`.
Both class are used to forwarding request to a specific FE node, and
there are lots of duplicate code.
So I refactor the code to let `MasterOpExecutor` extends from
`FEOpExecutor`.

No logic being changed in this PR.
morningman added a commit to morningman/doris that referenced this pull request Jun 20, 2025
Related PR: apache#34685

Problem Summary:

This PR apache#34685 introduced `FEOpExecutor`, which is just a copy of
`MasterOpExecutor`.
Both class are used to forwarding request to a specific FE node, and
there are lots of duplicate code.
So I refactor the code to let `MasterOpExecutor` extends from
`FEOpExecutor`.

No logic being changed in this PR.
morningman added a commit to morningman/doris that referenced this pull request Jun 24, 2025
…pache#50791)

Related PR: apache#50776, apache#46882

Problem Summary:

1. Fix bug that `KILL connection_id` is not supported in Nereids

This PR apache#46882 implements `KILL` in Nereids, but it miss the grammar
`KILL connection_id` and treat it as `KILL query_id`. This PR fix it.

2. Unify the core code of `KILL` operation in both old and new planner

All core logic about `kill` are moved to `KillUtils` class. So that both
old and new planner and can have same logic.

3. Support Kill query by query id from all FE

Previously, when executing `kill query query_id;`, Doris will only find
query id in current FE. If not found, Doris will send the cancel request
to all Backends to try cancelling this query.

In this PR, I changed the logic. Doris will first find query id in
current FE, if not found, this `kill` command will be forwarded to all
other Frontends to then find it in other FEs. And Doris will no longer
send the cancel request to Backend.

4. Support Kill query by trace id from all FE

User can set a custom `trace id` by `set
session_context="trace_id:your_trace_id"`. And this trace id will be
bind to the subsequent queries in this connection. Then user can cancel
the query by trace id:

    `KILL QUERY "trace_id"`

More details can be found in user doc:
apache/doris-website#2371
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by one committer. dev/3.1.0-merged reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants