Skip to content

[improvement](fe) add fe_meta_auth_token for FE meta-service internal HTTP auth#65551

Open
CalvinKirs wants to merge 1 commit into
apache:masterfrom
CalvinKirs:fe-meta-auth-token
Open

[improvement](fe) add fe_meta_auth_token for FE meta-service internal HTTP auth#65551
CalvinKirs wants to merge 1 commit into
apache:masterfrom
CalvinKirs:fe-meta-auth-token

Conversation

@CalvinKirs

Copy link
Copy Markdown
Member

What problem does this PR solve?

The FE meta-service endpoints (image/role/check/put/journal_id, etc.) authenticate callers only by the CLIENT_NODE_HOST/CLIENT_NODE_PORT headers — i.e. whether the claimed host:port is a registered FE. That is a plaintext claim with no secret, so any host that knows a valid FE address can impersonate it.

What this PR does

Add an optional cluster token fe_meta_auth_token:

  • Empty (default) — behavior is unchanged: node-host check only. Existing clusters and rolling upgrades are unaffected.
  • SetcheckFromValidFe additionally requires the request to carry a matching token header, on top of the existing node-host check (additive, does not replace the host check).

The token is a static fe.conf item, so a scaling-out FE already holds it before the bootstrap handshake — no chicken-and-egg with the token that /check itself hands out. It must be identical on all FEs.

Additional hardening of the meta-service:

  • /put rejects a port other than the FE HTTP port.
  • /dump always checks the admin password.
  • meta-helper logs header names only, never the token value.

Tests

  • MetaServiceTest: matching / missing / wrong token, no-token-when-unconfigured, unknown-host-rejected-even-with-token, /put port check, /dump auth.
  • HttpURLUtilTest: token header emission (present/absent) and internal URL building.

This supersedes #63782 (rebased onto latest master with a cleaner, switch-free design).

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

@CalvinKirs

Copy link
Copy Markdown
Member Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17764	4306	4282	4282
q2	2094	315	204	204
q3	10204	1429	836	836
q4	4682	471	346	346
q5	7537	841	585	585
q6	184	173	142	142
q7	768	815	619	619
q8	9339	1477	1548	1477
q9	6004	4413	4417	4413
q10	6738	1790	1509	1509
q11	508	337	316	316
q12	709	537	437	437
q13	18163	3346	2808	2808
q14	263	273	239	239
q15	q16	787	790	713	713
q17	923	866	932	866
q18	7049	5866	5559	5559
q19	1257	1216	1084	1084
q20	757	645	544	544
q21	5877	2636	2379	2379
q22	443	355	299	299
Total cold run time: 102050 ms
Total hot run time: 29657 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4494	4488	4440	4440
q2	293	318	221	221
q3	4561	5038	4413	4413
q4	2043	2153	1358	1358
q5	4469	4348	4298	4298
q6	226	178	128	128
q7	1755	2184	1708	1708
q8	2572	2254	2221	2221
q9	8104	8017	7909	7909
q10	4737	4756	4231	4231
q11	568	430	409	409
q12	766	763	567	567
q13	3314	3611	2966	2966
q14	310	300	272	272
q15	q16	710	731	631	631
q17	1361	1354	1425	1354
q18	8064	7386	7227	7227
q19	1146	1089	1048	1048
q20	2208	2218	1941	1941
q21	5264	4607	4454	4454
q22	534	459	394	394
Total cold run time: 57499 ms
Total hot run time: 52190 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 180017 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 d58d9b27bece6b621edd3c914dd425d9c38b12a2, data reload: false

query5	4294	633	497	497
query6	479	218	205	205
query7	4892	584	355	355
query8	349	189	175	175
query9	8799	4046	4038	4038
query10	483	349	301	301
query11	5938	2359	2185	2185
query12	161	100	102	100
query13	1279	606	474	474
query14	6279	5298	4959	4959
query14_1	4286	4267	4260	4260
query15	221	207	179	179
query16	1041	481	444	444
query17	1127	721	586	586
query18	2569	481	356	356
query19	225	196	156	156
query20	111	112	117	112
query21	238	160	135	135
query22	13698	13534	13389	13389
query23	17398	16623	16243	16243
query23_1	16333	16347	16283	16283
query24	7454	1773	1272	1272
query24_1	1331	1281	1296	1281
query25	581	469	392	392
query26	1332	348	218	218
query27	2551	568	400	400
query28	4458	2000	2032	2000
query29	1084	640	509	509
query30	350	262	235	235
query31	1116	1093	994	994
query32	111	62	62	62
query33	520	321	259	259
query34	1180	1107	674	674
query35	766	795	682	682
query36	1401	1414	1247	1247
query37	159	107	89	89
query38	1893	1705	1655	1655
query39	918	927	903	903
query39_1	893	882	912	882
query40	253	157	137	137
query41	65	67	64	64
query42	95	89	93	89
query43	321	320	279	279
query44	1414	774	765	765
query45	199	183	183	183
query46	1079	1228	749	749
query47	2361	2395	2242	2242
query48	386	415	297	297
query49	587	409	310	310
query50	1048	427	327	327
query51	10783	10538	10724	10538
query52	87	86	74	74
query53	260	282	204	204
query54	280	234	235	234
query55	75	69	68	68
query56	308	282	287	282
query57	1424	1403	1319	1319
query58	284	246	250	246
query59	1595	1651	1484	1484
query60	298	270	252	252
query61	150	147	147	147
query62	688	655	591	591
query63	239	203	207	203
query64	2806	1018	803	803
query65	4851	4740	4776	4740
query66	1817	505	385	385
query67	29565	29452	29421	29421
query68	3245	1522	984	984
query69	410	305	277	277
query70	1114	962	973	962
query71	351	316	305	305
query72	3016	2811	2360	2360
query73	824	796	444	444
query74	5137	4962	4793	4793
query75	2602	2580	2221	2221
query76	2315	1179	779	779
query77	351	371	284	284
query78	12272	12362	11672	11672
query79	1408	1211	746	746
query80	1278	541	473	473
query81	525	320	278	278
query82	624	158	126	126
query83	370	319	309	309
query84	296	159	131	131
query85	966	576	498	498
query86	428	309	274	274
query87	1839	1836	1755	1755
query88	3672	2806	2806	2806
query89	452	402	362	362
query90	1929	205	199	199
query91	198	193	160	160
query92	59	64	55	55
query93	1722	1477	1004	1004
query94	721	372	307	307
query95	762	569	469	469
query96	1062	794	357	357
query97	2712	2701	2588	2588
query98	220	204	210	204
query99	1144	1171	1024	1024
Total cold run time: 266054 ms
Total hot run time: 180017 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 d58d9b27bece6b621edd3c914dd425d9c38b12a2, data reload: false

query1	0.00	0.01	0.00
query2	0.09	0.05	0.05
query3	0.26	0.14	0.13
query4	1.61	0.14	0.13
query5	0.25	0.23	0.24
query6	1.29	1.09	1.04
query7	0.04	0.01	0.01
query8	0.05	0.04	0.04
query9	0.38	0.32	0.32
query10	0.56	0.58	0.55
query11	0.19	0.14	0.14
query12	0.18	0.14	0.14
query13	0.47	0.47	0.48
query14	1.03	1.01	1.00
query15	0.60	0.59	0.61
query16	0.33	0.32	0.32
query17	1.14	1.08	1.14
query18	0.25	0.21	0.21
query19	2.00	2.00	1.95
query20	0.02	0.01	0.01
query21	15.43	0.19	0.13
query22	4.92	0.05	0.05
query23	16.15	0.32	0.13
query24	2.99	0.42	0.31
query25	0.11	0.05	0.04
query26	0.76	0.20	0.16
query27	0.03	0.04	0.03
query28	3.56	0.95	0.55
query29	12.54	4.20	3.35
query30	0.28	0.17	0.17
query31	2.77	0.61	0.30
query32	3.22	0.59	0.50
query33	3.17	3.17	3.22
query34	15.64	4.21	3.51
query35	3.53	3.52	3.55
query36	0.55	0.42	0.43
query37	0.09	0.07	0.07
query38	0.06	0.04	0.04
query39	0.03	0.03	0.03
query40	0.17	0.16	0.15
query41	0.08	0.03	0.04
query42	0.04	0.03	0.03
query43	0.04	0.04	0.03
Total cold run time: 96.9 s
Total hot run time: 25.13 s

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 86.67% (26/30) 🎉
Increment coverage report
Complete coverage report

@hello-stephen

Copy link
Copy Markdown
Contributor

FE Regression Coverage Report

Increment line coverage 40.00% (12/30) 🎉
Increment coverage report
Complete coverage report

@CalvinKirs CalvinKirs force-pushed the fe-meta-auth-token branch from d58d9b2 to ec7a7cd Compare July 14, 2026 09:52
@CalvinKirs

Copy link
Copy Markdown
Member Author

/review

@CalvinKirs

Copy link
Copy Markdown
Member Author

run buildall

Comment thread fe/fe-core/src/main/java/org/apache/doris/master/MetaHelper.java

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

Review complete. I found two blocking issues around the new FE meta token/config surfaces:

  • /rest/v2/manager/node/config and the FE branch of /configuration_info do not actually enforce ADMIN in the default configuration because checkAdminAuth is conditional on enable_all_http_auth.
  • fe_meta_auth_token is exposed through the legacy /rest/v1/config/fe API to Basic-authenticated on-prem users.

Checkpoint conclusions: the FE-to-FE meta request propagation, /put port handling, storage-token response behavior, empty-token compatibility, and /dump password check look consistent from static review. Concurrency, lifecycle, persistence, transaction, and data-write concerns are not materially involved in this PR. The blocker is config/auth handling: the new sensitive token is a plain config field and the HTTP config readers are not consistently ADMIN-gated or masked. Tests cover token propagation, /put port behavior, and /dump password invocation, but they miss non-admin denial for both config APIs. No additional user focus was provided. Validation was static only because this review environment lacks .worktree_initialized, thirdparty/installed, and thirdparty/installed/bin/protoc, and the prompt forbids builds or code modifications.

// with the SQL "SHOW FRONTEND CONFIG". The internal FE-to-FE fan-out (configurationInfo)
// is itself ADMIN-gated and forwards the admin credential, so it is unaffected.
ActionAuthorizationInfo authInfo = executeCheckPassword(request, response);
checkAdminAuth(authInfo.userIdentity);

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 does not enforce ADMIN in the default configuration. checkAdminAuth only calls checkGlobalAuth(..., ADMIN) when Config.enable_all_http_auth is true; with the default false, it returns without checking privileges. This endpoint then returns raw ConfigBase.getConfigInfo(null) values, including sensitive config such as auth_token and the new fe_meta_auth_token, so an authenticated non-admin can still read them through /rest/v2/manager/node/config (and through the FE branch of /configuration_info, which uses the same helper before fan-out). If this should match SHOW FRONTEND CONFIG, use an unconditional ADMIN check here, for example checkGlobalAuth(authInfo.userIdentity, PrivPredicate.ADMIN), and apply the same gate before FE config fan-out.

+ "image/role/check/put/journal_id)在原有 node-host 校验之上,额外要求调用方携带匹配的 token 头。"
+ "为空(默认)时维持仅 node-host 校验的旧行为,存量集群与滚动升级不受影响。必须在所有 FE 上取值一致,"
+ "并在启用前写入 fe.conf,否则 FE 之间会互相拒绝。"})
public static String fe_meta_auth_token = "";

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 token is added as a regular @ConfField, so it is also returned by the legacy config API. Config.dump() includes every annotated field with the raw value, and /rest/v1/config/fe?conf_item=fe_meta_auth_token serves that map. Although /rest/v1/** goes through AuthInterceptor, the Basic Authorization path only checks the password and skips ADMIN_OR_NODE unless Config.isCloudMode() is true, so a normal authenticated on-prem user can read the meta-service token. Please either gate this config reader with the same unconditional ADMIN check as SHOW FRONTEND CONFIG, or add a sensitive/masked config mechanism and mark this token so every config dump API masks or omits it.

if (!Strings.isNullOrEmpty(clusterToken)) {
String requestToken = request.getHeader(MetaBaseAction.TOKEN);
if (!clusterToken.equals(requestToken)) {
LOG.warn("reject meta request with invalid token. client: {}, {}, request from: {}",

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.

Here you can output the prefix to check, the rest is masked, for example, abc*** is not equal to bbc***, and so on, both confidential and can debug

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Why would there be a need for debugging?

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.

sometimes we may need to know why the token is invalid, result inequality hides too much.
especially when we support rotation for the auth token, once we encounter auth fail, we know reason instantly by looking at this log.
observability matters.

@CalvinKirs CalvinKirs force-pushed the fe-meta-auth-token branch from ec7a7cd to e745f08 Compare July 14, 2026 11:10
// because here we need to obtain selfNode through the official service catalog.
HostInfo selfNode = Env.getServingEnv().getSelfNode();
Env env = Env.getServingEnv();
HostInfo selfNode = env.getSelfNode();

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.

why change this? it doesnt make scense to make one-line into 2.

HostInfo selfNode = env.getSelfNode();
conn.setRequestProperty(Env.CLIENT_NODE_HOST_KEY, selfNode.getHost());
conn.setRequestProperty(Env.CLIENT_NODE_PORT_KEY, selfNode.getPort() + "");
setClusterToken(conn, getClusterToken());

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.

is this wrapper necessary?

@@ -20,8 +20,10 @@
import org.apache.doris.catalog.Env;

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.

I remember there is another util like httpurlutil, InternalHttpsUtils.java
does it matter?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

InternalHttpsUtils only provides the shared SSLContext/truststore for TLS; HttpURLUtil builds the JDK HttpURLConnection and adds the node-ident + token headers, delegating TLS to InternalHttpsUtils. They're layered, not duplicated. The token is an auth header on the checkFromValidFe-protected meta endpoints, all of which go through HttpURLUtil, and it is sent unconditionally so it rides over HTTPS as well — so InternalHttpsUtils is orthogonal to this change and HTTPS works.

@CalvinKirs CalvinKirs force-pushed the fe-meta-auth-token branch from e745f08 to ede0012 Compare July 14, 2026 11:24
@CalvinKirs

Copy link
Copy Markdown
Member Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17608	4119	4051	4051
q2	2030	326	203	203
q3	10304	1441	833	833
q4	4799	483	348	348
q5	7574	844	579	579
q6	178	173	136	136
q7	758	830	613	613
q8	9353	1524	1533	1524
q9	5537	4348	4289	4289
q10	6713	1736	1470	1470
q11	493	344	306	306
q12	700	536	431	431
q13	18112	3449	2795	2795
q14	274	266	241	241
q15	q16	786	769	711	711
q17	982	963	1032	963
q18	6835	5720	5472	5472
q19	1355	1228	1077	1077
q20	748	651	556	556
q21	6131	2798	2608	2608
q22	478	374	313	313
Total cold run time: 101748 ms
Total hot run time: 29519 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	5264	4716	4849	4716
q2	311	330	212	212
q3	4992	5286	4701	4701
q4	2085	2172	1377	1377
q5	4747	4825	4558	4558
q6	232	176	131	131
q7	1978	1789	1542	1542
q8	2381	2073	2127	2073
q9	7695	7161	7186	7161
q10	4621	4573	4175	4175
q11	523	402	389	389
q12	714	737	525	525
q13	2977	3375	2790	2790
q14	272	285	250	250
q15	q16	667	689	609	609
q17	1265	1249	1246	1246
q18	7364	6866	6897	6866
q19	1086	1042	1080	1042
q20	2238	2206	1931	1931
q21	5245	4541	4474	4474
q22	523	457	415	415
Total cold run time: 57180 ms
Total hot run time: 51183 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 177555 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 ede001216e2d199f486ebdaef7893c361f69b7ce, data reload: false

query5	4331	643	489	489
query6	440	254	210	210
query7	4878	606	335	335
query8	339	192	172	172
query9	8770	4104	4093	4093
query10	474	363	315	315
query11	5793	2346	2141	2141
query12	158	105	105	105
query13	1274	628	448	448
query14	6257	5225	4947	4947
query14_1	4300	4301	4308	4301
query15	209	213	180	180
query16	1023	493	465	465
query17	955	727	597	597
query18	2466	479	355	355
query19	218	195	158	158
query20	110	109	109	109
query21	240	162	141	141
query22	13557	13569	13410	13410
query23	17568	16602	16195	16195
query23_1	16234	16234	16220	16220
query24	7492	1778	1292	1292
query24_1	1375	1294	1273	1273
query25	591	478	388	388
query26	1341	342	201	201
query27	2650	592	369	369
query28	4466	2023	2023	2023
query29	1101	639	515	515
query30	336	262	222	222
query31	1118	1093	977	977
query32	106	64	68	64
query33	523	332	276	276
query34	1203	1164	633	633
query35	832	791	671	671
query36	1193	1201	1101	1101
query37	153	109	90	90
query38	1883	1712	1634	1634
query39	873	871	850	850
query39_1	847	838	824	824
query40	236	160	140	140
query41	66	64	66	64
query42	90	93	90	90
query43	333	335	283	283
query44	1483	798	760	760
query45	197	188	174	174
query46	1041	1236	772	772
query47	2088	2100	1969	1969
query48	402	431	301	301
query49	589	430	303	303
query50	1061	437	320	320
query51	10817	10759	10661	10661
query52	92	87	75	75
query53	261	288	195	195
query54	286	230	213	213
query55	75	79	68	68
query56	317	288	283	283
query57	1300	1266	1211	1211
query58	285	247	265	247
query59	1599	1690	1456	1456
query60	319	267	247	247
query61	158	152	146	146
query62	541	495	431	431
query63	239	198	197	197
query64	2823	1085	850	850
query65	4722	4676	4643	4643
query66	1830	490	368	368
query67	29451	29162	28445	28445
query68	3387	1507	1026	1026
query69	407	314	260	260
query70	1111	996	995	995
query71	353	319	309	309
query72	3250	2693	2315	2315
query73	838	798	430	430
query74	5019	4914	4723	4723
query75	2513	2487	2124	2124
query76	2332	1237	804	804
query77	359	385	291	291
query78	11874	11909	11323	11323
query79	1434	1190	793	793
query80	1276	541	468	468
query81	534	322	289	289
query82	593	157	124	124
query83	391	330	294	294
query84	329	157	132	132
query85	983	595	498	498
query86	420	327	278	278
query87	1853	1818	1764	1764
query88	3805	2828	2826	2826
query89	432	376	323	323
query90	1909	207	207	207
query91	206	188	160	160
query92	63	62	60	60
query93	1660	1448	920	920
query94	725	358	307	307
query95	794	479	566	479
query96	1066	815	347	347
query97	2620	2622	2479	2479
query98	209	203	207	203
query99	1088	1120	966	966
Total cold run time: 264520 ms
Total hot run time: 177555 ms

@hello-stephen

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

query1	0.01	0.00	0.00
query2	0.10	0.05	0.04
query3	0.25	0.14	0.16
query4	1.61	0.12	0.13
query5	0.24	0.23	0.22
query6	1.25	1.08	1.06
query7	0.03	0.01	0.00
query8	0.05	0.04	0.04
query9	0.37	0.34	0.32
query10	0.56	0.58	0.56
query11	0.19	0.14	0.14
query12	0.18	0.15	0.16
query13	0.48	0.48	0.49
query14	1.03	1.02	1.00
query15	0.63	0.62	0.61
query16	0.33	0.34	0.32
query17	1.09	1.07	1.11
query18	0.24	0.22	0.21
query19	2.03	1.92	1.94
query20	0.02	0.01	0.02
query21	15.44	0.22	0.13
query22	5.00	0.05	0.06
query23	16.14	0.32	0.12
query24	2.93	0.43	0.31
query25	0.09	0.06	0.05
query26	0.74	0.21	0.16
query27	0.04	0.03	0.04
query28	3.50	0.94	0.52
query29	12.53	4.06	3.20
query30	0.29	0.16	0.16
query31	2.77	0.62	0.31
query32	3.22	0.59	0.48
query33	3.24	3.31	3.27
query34	15.48	4.26	3.52
query35	3.52	3.57	3.53
query36	0.57	0.46	0.44
query37	0.09	0.07	0.07
query38	0.05	0.04	0.03
query39	0.04	0.02	0.02
query40	0.18	0.16	0.15
query41	0.08	0.03	0.02
query42	0.04	0.03	0.03
query43	0.04	0.04	0.04
Total cold run time: 96.71 s
Total hot run time: 25.05 s

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 78.57% (22/28) 🎉
Increment coverage report
Complete coverage report

@CalvinKirs CalvinKirs force-pushed the fe-meta-auth-token branch from ede0012 to 860a29d Compare July 15, 2026 01:53
@CalvinKirs

Copy link
Copy Markdown
Member Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17780	4120	4077	4077
q2	2020	314	216	216
q3	10261	1373	792	792
q4	4696	472	337	337
q5	7490	849	551	551
q6	179	163	136	136
q7	761	825	605	605
q8	9603	1651	1558	1558
q9	6018	4286	4290	4286
q10	6787	1732	1466	1466
q11	489	338	316	316
q12	711	537	429	429
q13	18129	3374	2740	2740
q14	275	255	253	253
q15	q16	779	781	704	704
q17	979	898	954	898
q18	6803	5856	5460	5460
q19	1640	1226	987	987
q20	818	661	545	545
q21	5962	2631	2328	2328
q22	437	359	302	302
Total cold run time: 102617 ms
Total hot run time: 28986 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4433	4324	4402	4324
q2	282	312	208	208
q3	4574	4934	4568	4568
q4	2041	2130	1382	1382
q5	4358	4230	4189	4189
q6	222	179	127	127
q7	1710	2119	1687	1687
q8	2447	2182	2092	2092
q9	7787	7742	7680	7680
q10	4680	4618	4212	4212
q11	573	425	427	425
q12	759	754	551	551
q13	3372	3634	2935	2935
q14	321	341	289	289
q15	q16	718	767	644	644
q17	1356	1308	1336	1308
q18	7982	7504	7230	7230
q19	1105	1056	1059	1056
q20	2225	2206	1968	1968
q21	5184	4529	4393	4393
q22	508	464	404	404
Total cold run time: 56637 ms
Total hot run time: 51672 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 177527 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 860a29d891ef7f707595d563778999a296c15258, data reload: false

query5	4346	645	488	488
query6	462	223	208	208
query7	4883	577	344	344
query8	348	186	173	173
query9	8752	4087	4079	4079
query10	493	339	284	284
query11	5934	2356	2146	2146
query12	166	104	102	102
query13	1272	612	426	426
query14	6269	5211	4897	4897
query14_1	4258	4251	4325	4251
query15	227	208	187	187
query16	1040	475	456	456
query17	1130	710	571	571
query18	2445	495	355	355
query19	213	197	160	160
query20	116	113	110	110
query21	232	157	137	137
query22	13593	13606	13323	13323
query23	17073	16499	16091	16091
query23_1	16268	16079	16256	16079
query24	7876	1797	1320	1320
query24_1	1321	1295	1325	1295
query25	588	495	428	428
query26	1369	383	217	217
query27	2517	631	372	372
query28	4452	2021	1959	1959
query29	1087	627	515	515
query30	339	263	229	229
query31	1117	1101	990	990
query32	108	66	60	60
query33	534	340	263	263
query34	1157	1157	662	662
query35	781	790	666	666
query36	1160	1157	1053	1053
query37	158	104	94	94
query38	1884	1720	1661	1661
query39	862	897	845	845
query39_1	832	833	849	833
query40	244	203	136	136
query41	70	62	61	61
query42	90	92	90	90
query43	327	324	276	276
query44	1467	759	759	759
query45	196	187	170	170
query46	1109	1189	722	722
query47	2119	2107	2011	2011
query48	404	394	312	312
query49	592	439	311	311
query50	1027	425	323	323
query51	10951	10966	10863	10863
query52	84	85	73	73
query53	265	284	201	201
query54	292	240	214	214
query55	76	75	70	70
query56	291	290	292	290
query57	1321	1271	1201	1201
query58	298	261	248	248
query59	1527	1637	1418	1418
query60	298	271	254	254
query61	156	151	150	150
query62	536	496	431	431
query63	234	200	196	196
query64	2747	1051	892	892
query65	4703	4631	4603	4603
query66	1799	512	380	380
query67	29224	29246	29069	29069
query68	3096	1514	995	995
query69	413	309	270	270
query70	1081	992	908	908
query71	343	329	290	290
query72	3094	2681	2390	2390
query73	870	787	414	414
query74	5064	4874	4735	4735
query75	2594	2494	2140	2140
query76	2316	1242	784	784
query77	368	398	284	284
query78	11951	11835	11257	11257
query79	1506	1182	744	744
query80	1255	543	453	453
query81	527	327	273	273
query82	582	157	119	119
query83	365	324	287	287
query84	282	158	130	130
query85	956	610	512	512
query86	429	290	278	278
query87	1841	1823	1765	1765
query88	3781	2776	2715	2715
query89	431	373	325	325
query90	1872	203	196	196
query91	196	193	158	158
query92	62	62	59	59
query93	1794	1512	951	951
query94	717	363	313	313
query95	813	508	470	470
query96	1138	795	344	344
query97	2622	2624	2487	2487
query98	229	205	202	202
query99	1084	1110	986	986
Total cold run time: 264124 ms
Total hot run time: 177527 ms

@hello-stephen

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

query1	0.00	0.00	0.00
query2	0.11	0.05	0.06
query3	0.26	0.13	0.12
query4	1.60	0.14	0.13
query5	0.28	0.22	0.22
query6	1.27	1.06	1.08
query7	0.04	0.01	0.01
query8	0.06	0.04	0.04
query9	0.37	0.31	0.30
query10	0.55	0.56	0.55
query11	0.18	0.14	0.14
query12	0.18	0.15	0.14
query13	0.46	0.47	0.47
query14	1.03	1.03	1.01
query15	0.63	0.59	0.59
query16	0.31	0.33	0.33
query17	1.09	1.09	1.09
query18	0.24	0.21	0.21
query19	2.06	1.98	1.92
query20	0.02	0.01	0.01
query21	15.44	0.21	0.15
query22	4.92	0.05	0.06
query23	16.13	0.32	0.13
query24	2.95	0.41	0.32
query25	0.10	0.05	0.04
query26	0.74	0.21	0.14
query27	0.05	0.04	0.04
query28	3.55	0.98	0.55
query29	12.52	4.08	3.17
query30	0.27	0.16	0.16
query31	2.78	0.59	0.31
query32	3.22	0.59	0.48
query33	3.16	3.17	3.22
query34	15.62	4.21	3.53
query35	3.52	3.52	3.52
query36	0.57	0.45	0.42
query37	0.09	0.07	0.06
query38	0.05	0.04	0.03
query39	0.03	0.03	0.03
query40	0.19	0.17	0.17
query41	0.08	0.03	0.03
query42	0.04	0.03	0.03
query43	0.04	0.04	0.03
Total cold run time: 96.8 s
Total hot run time: 24.95 s

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 78.57% (22/28) 🎉
Increment coverage report
Complete coverage report

@CalvinKirs CalvinKirs force-pushed the fe-meta-auth-token branch from 860a29d to 2704914 Compare July 15, 2026 04:24
@CalvinKirs

Copy link
Copy Markdown
Member Author

run buildall

@CalvinKirs

Copy link
Copy Markdown
Member Author

/review

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17781	4037	3964	3964
q2	1994	315	205	205
q3	10298	1372	811	811
q4	4681	470	340	340
q5	7482	852	565	565
q6	178	170	142	142
q7	749	824	621	621
q8	9459	1649	1602	1602
q9	6077	4334	4285	4285
q10	6783	1697	1465	1465
q11	497	348	309	309
q12	720	556	441	441
q13	18138	3341	2713	2713
q14	265	259	242	242
q15	q16	782	766	718	718
q17	933	962	891	891
q18	6837	5703	5525	5525
q19	1574	1275	1060	1060
q20	751	643	547	547
q21	5826	2607	2409	2409
q22	420	354	301	301
Total cold run time: 102225 ms
Total hot run time: 29156 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4389	4267	4331	4267
q2	286	312	214	214
q3	4641	5024	4354	4354
q4	2013	2131	1369	1369
q5	4360	4267	4262	4262
q6	230	175	129	129
q7	1740	1684	1980	1684
q8	2494	2135	2069	2069
q9	7807	7792	7824	7792
q10	4686	4651	4208	4208
q11	595	420	382	382
q12	748	744	541	541
q13	3404	3621	2900	2900
q14	327	323	295	295
q15	q16	769	728	682	682
q17	1346	1313	1312	1312
q18	8019	7274	7360	7274
q19	1099	1106	1061	1061
q20	2210	2205	1944	1944
q21	5187	4522	4386	4386
q22	520	462	407	407
Total cold run time: 56870 ms
Total hot run time: 51532 ms

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

Review complete. I found two blocking issues:

  • /dump is now password-gated but still not ADMIN-gated before it creates a full metadata image and returns the server-side path.
  • The new sensitive-config masking is opt-in, so auth_token remains unmasked through the legacy /rest/v1/config/fe path for default on-prem Basic-authenticated users.

Checkpoint conclusions: the FE-to-FE token propagation, empty-token compatibility, /put port validation, HTTPS path, invalid-token handling, and v2 manager config ADMIN gates look consistent from static review. The PR is focused and mostly follows existing helper paths. I did not find material concurrency, lifecycle, persistence, transaction, FE-BE protocol, or data-write issues beyond the metadata dump side effect noted inline. Tests cover the new positive token/config paths, but they miss the non-admin /dump denial and existing-secret masking cases called out below.

User focus: No additional user-provided review focus was supplied.

Validation: Static review only; this review prompt forbids builds, tests, and source modifications.


// If true, the value is a secret (e.g. a token or password) and is masked in every
// config dump API (Config.dump / getConfigInfo), so it is never returned in plaintext.
boolean sensitive() default false;

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.

Because this new masking is opt-in, marking only fe_meta_auth_token still leaves existing internal secrets visible. Config.auth_token is still a regular @ConfField, and /rest/v1/config/fe still serves Config.dump(); on the default on-prem Basic-auth path the interceptor authenticates the password but does not require ADMIN, so conf_item=auth_token can still return the raw cluster token. Please either make the legacy config reader ADMIN-only as well, or mark existing real secrets (at least auth_token) as sensitive = true and add coverage for that path.

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

Anchor correction for the /dump ADMIN-gate finding.

if (Config.enable_all_http_auth) {
executeCheckPassword(request, response);
}
executeCheckPassword(request, response);

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.

executeCheckPassword() only proves the caller has valid credentials; it does not enforce any privilege. Since /dump is excluded from AuthInterceptor, this lets any Basic-authenticated user call Env.dumpImage(), which takes the catalog/db/table locks, writes a full metadata image, and returns its server-side path. This should be ADMIN-gated like the other metadata/debug operations: capture the returned ActionAuthorizationInfo and call checkGlobalAuth(authInfo.userIdentity, PrivPredicate.ADMIN) before dumping, with a negative test for an authenticated non-admin user.

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 177700 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 270491448eab3775f7b9e14dcf8ed76d605e5410, data reload: false

query5	4358	651	493	493
query6	464	212	208	208
query7	4835	633	353	353
query8	341	193	173	173
query9	8765	4096	4092	4092
query10	488	351	327	327
query11	5917	2348	2162	2162
query12	153	111	107	107
query13	1320	632	419	419
query14	6415	5265	4948	4948
query14_1	4319	4294	4331	4294
query15	218	206	181	181
query16	1041	496	454	454
query17	1132	731	595	595
query18	2621	481	356	356
query19	216	192	156	156
query20	112	110	109	109
query21	234	159	138	138
query22	13611	13658	13354	13354
query23	17102	16570	16025	16025
query23_1	16262	16204	16162	16162
query24	7450	1777	1257	1257
query24_1	1321	1292	1281	1281
query25	570	470	400	400
query26	1093	359	204	204
query27	2561	610	380	380
query28	4380	1986	1992	1986
query29	1083	632	499	499
query30	337	275	236	236
query31	1121	1096	992	992
query32	114	66	62	62
query33	538	329	270	270
query34	1175	1185	666	666
query35	777	796	685	685
query36	1190	1207	1076	1076
query37	154	107	94	94
query38	1896	1708	1667	1667
query39	934	905	854	854
query39_1	828	861	846	846
query40	247	167	180	167
query41	64	67	62	62
query42	93	92	87	87
query43	319	329	271	271
query44	1478	773	772	772
query45	196	184	168	168
query46	1083	1151	753	753
query47	2138	2116	2032	2032
query48	416	437	282	282
query49	598	411	310	310
query50	1004	438	343	343
query51	10749	10663	10720	10663
query52	84	87	78	78
query53	263	284	203	203
query54	280	228	215	215
query55	77	84	65	65
query56	312	273	284	273
query57	1316	1290	1196	1196
query58	270	274	251	251
query59	1585	1635	1431	1431
query60	308	259	245	245
query61	150	149	146	146
query62	544	497	425	425
query63	237	199	204	199
query64	2505	1048	880	880
query65	4731	4675	4677	4675
query66	1744	501	371	371
query67	29374	29307	29083	29083
query68	3194	1593	962	962
query69	406	294	266	266
query70	1072	961	966	961
query71	357	306	307	306
query72	3149	2666	2350	2350
query73	878	791	410	410
query74	5036	4920	4734	4734
query75	2530	2505	2142	2142
query76	2333	1205	799	799
query77	358	403	289	289
query78	11912	11875	11356	11356
query79	1468	1210	778	778
query80	1275	544	475	475
query81	525	329	275	275
query82	602	159	121	121
query83	374	323	291	291
query84	277	163	132	132
query85	948	598	515	515
query86	420	300	294	294
query87	1883	1847	1737	1737
query88	3744	2797	2764	2764
query89	436	370	328	328
query90	1891	208	205	205
query91	205	193	163	163
query92	63	65	55	55
query93	1700	1544	916	916
query94	733	372	311	311
query95	799	498	455	455
query96	1090	815	358	358
query97	2628	2638	2482	2482
query98	216	207	199	199
query99	1081	1105	973	973
Total cold run time: 263386 ms
Total hot run time: 177700 ms

@hello-stephen

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

query1	0.01	0.01	0.01
query2	0.09	0.06	0.05
query3	0.24	0.13	0.15
query4	1.60	0.14	0.14
query5	0.24	0.23	0.22
query6	1.24	1.05	1.05
query7	0.04	0.00	0.00
query8	0.06	0.04	0.04
query9	0.37	0.31	0.31
query10	0.59	0.60	0.55
query11	0.20	0.14	0.14
query12	0.19	0.14	0.14
query13	0.49	0.48	0.50
query14	1.01	1.01	1.02
query15	0.62	0.61	0.60
query16	0.31	0.32	0.31
query17	1.09	1.13	1.09
query18	0.21	0.21	0.20
query19	1.98	1.90	1.96
query20	0.01	0.02	0.01
query21	15.44	0.21	0.15
query22	4.85	0.06	0.05
query23	16.15	0.31	0.12
query24	2.94	0.44	0.35
query25	0.11	0.05	0.05
query26	0.74	0.21	0.15
query27	0.05	0.04	0.03
query28	3.52	0.94	0.55
query29	12.46	4.09	3.22
query30	0.27	0.16	0.16
query31	2.77	0.58	0.30
query32	3.22	0.60	0.49
query33	3.10	3.31	3.15
query34	15.58	4.22	3.53
query35	3.54	3.46	3.52
query36	0.55	0.44	0.42
query37	0.09	0.06	0.07
query38	0.05	0.04	0.04
query39	0.04	0.04	0.03
query40	0.18	0.17	0.15
query41	0.09	0.03	0.03
query42	0.04	0.03	0.03
query43	0.05	0.04	0.04
Total cold run time: 96.42 s
Total hot run time: 24.94 s

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 76.47% (26/34) 🎉
Increment coverage report
Complete coverage report

… HTTP auth

The FE meta-service endpoints (image/role/check/put/journal_id, etc.) only
authenticate callers by the CLIENT_NODE_HOST/PORT headers, i.e. whether the
claimed host:port is a registered FE. That is a plaintext claim with no secret,
so any host that knows a valid FE address can impersonate it.

Add an optional cluster token, fe_meta_auth_token:
- When empty (default), behavior is unchanged: node-host check only. Existing
  clusters and rolling upgrades are unaffected.
- When set, checkFromValidFe additionally requires the request to carry a
  matching token header, on top of the existing node-host check (the token
  check is additive, it does not replace the host check).

The token is a static fe.conf item, so a scaling-out FE already holds it before
the bootstrap handshake -- no chicken-and-egg with the token that /check hands
out. Must be identical on all FEs.

Keep the token out of every config dump API. Add a `sensitive` attribute to
@ConfField and mark fe_meta_auth_token sensitive; ConfigBase.dump() and
getConfigInfo() then return a mask instead of the real value. This closes the
plaintext leak through both /rest/v2/manager/node/config and the legacy
/rest/v1/config/fe (Config.dump), regardless of how each endpoint is gated. An
empty value is left as-is so "unset" stays visible.

Also gate the FE config readers with an unconditional ADMIN check
(checkGlobalAuth(..., ADMIN)) on /rest/v2/manager/node/config and the FE fan-out
of /configuration_info, matching the SQL "SHOW FRONTEND CONFIG". Note that the
existing checkAdminAuth helper only enforces ADMIN when enable_all_http_auth is
true, so it is a no-op by default and cannot be relied on here.

Also harden the meta-service:
- /put rejects a port other than the expected FE HTTP port. The expected port
  follows HttpURLUtil.getHttpPort() (https_port when enable_https=true, else
  http_port), matching what the master sends, so the check is correct under
  HTTPS instead of always comparing against http_port.
- /dump always checks the admin password.
- meta-helper logs header names only (never the token value).

Tests: MetaServiceTest covers matching/missing/wrong token, no-token-when-
unconfigured, unknown-host-rejected-even-with-token, /put port check under both
HTTP and HTTPS, and /dump auth; HttpURLUtilTest covers token header emission and
internal URL building; ConfigTest covers sensitive-config masking (set value is
masked in dump/getConfigInfo, empty value is not).
@CalvinKirs CalvinKirs force-pushed the fe-meta-auth-token branch from 2704914 to 72c0015 Compare July 15, 2026 06:20
@CalvinKirs

Copy link
Copy Markdown
Member Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17714	4041	4069	4041
q2	2123	308	199	199
q3	10195	1420	823	823
q4	4684	464	334	334
q5	7497	840	575	575
q6	190	177	148	148
q7	770	810	598	598
q8	9860	1543	1611	1543
q9	5873	4333	4278	4278
q10	6825	1709	1443	1443
q11	501	338	318	318
q12	742	557	447	447
q13	18235	3382	2720	2720
q14	273	264	235	235
q15	q16	786	773	704	704
q17	1039	982	1006	982
q18	6855	5821	5481	5481
q19	1595	1258	956	956
q20	797	622	548	548
q21	5907	2616	2441	2441
q22	437	354	291	291
Total cold run time: 102898 ms
Total hot run time: 29105 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4409	4381	4324	4324
q2	301	325	212	212
q3	4586	4968	4351	4351
q4	2054	2144	1358	1358
q5	4435	4360	4323	4323
q6	239	180	131	131
q7	1732	2151	1621	1621
q8	2504	2252	2117	2117
q9	7824	7895	7771	7771
q10	4669	4661	4201	4201
q11	602	423	376	376
q12	747	748	623	623
q13	3440	3538	3023	3023
q14	306	318	281	281
q15	q16	748	776	672	672
q17	1384	1329	1340	1329
q18	7897	7400	7074	7074
q19	1084	1035	1047	1035
q20	2221	2219	1924	1924
q21	5251	4651	4558	4558
q22	508	466	428	428
Total cold run time: 56941 ms
Total hot run time: 51732 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 177281 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 72c001551d7af59bc946cc495ded08cd96033504, data reload: false

query5	4308	629	473	473
query6	455	215	227	215
query7	4883	583	333	333
query8	339	189	176	176
query9	8783	4024	4011	4011
query10	510	351	297	297
query11	5941	2310	2139	2139
query12	177	129	97	97
query13	1273	604	457	457
query14	6248	5210	4834	4834
query14_1	4199	4253	4202	4202
query15	213	202	182	182
query16	1069	465	443	443
query17	1140	708	565	565
query18	2488	451	339	339
query19	214	183	142	142
query20	118	106	107	106
query21	234	158	130	130
query22	13613	13688	13273	13273
query23	17196	16302	16044	16044
query23_1	16130	16186	16095	16095
query24	7484	1716	1279	1279
query24_1	1316	1308	1274	1274
query25	572	465	392	392
query26	1410	365	227	227
query27	2883	604	398	398
query28	4524	2062	2065	2062
query29	1091	614	495	495
query30	356	261	231	231
query31	1121	1095	973	973
query32	106	63	64	63
query33	539	325	255	255
query34	1210	1086	645	645
query35	769	789	669	669
query36	1193	1192	1031	1031
query37	157	102	103	102
query38	1896	1703	1674	1674
query39	870	877	869	869
query39_1	845	832	842	832
query40	248	167	146	146
query41	65	63	70	63
query42	93	91	92	91
query43	319	322	277	277
query44	1394	773	763	763
query45	190	194	172	172
query46	1036	1146	724	724
query47	2173	2081	2007	2007
query48	391	423	301	301
query49	603	420	305	305
query50	1030	421	325	325
query51	10715	10431	10610	10431
query52	85	86	74	74
query53	246	281	197	197
query54	291	250	209	209
query55	73	69	66	66
query56	319	293	271	271
query57	1283	1261	1221	1221
query58	317	251	269	251
query59	1525	1667	1443	1443
query60	315	271	250	250
query61	156	146	149	146
query62	554	485	436	436
query63	231	195	195	195
query64	2866	1040	903	903
query65	4654	4603	4635	4603
query66	1865	492	376	376
query67	29314	29189	28986	28986
query68	3163	1550	1017	1017
query69	424	288	261	261
query70	1025	1002	958	958
query71	348	349	305	305
query72	3095	2832	2261	2261
query73	871	794	419	419
query74	5074	4913	4717	4717
query75	2509	2482	2131	2131
query76	2376	1167	758	758
query77	356	370	285	285
query78	11757	11834	11269	11269
query79	1410	1181	730	730
query80	645	561	496	496
query81	456	317	282	282
query82	595	162	122	122
query83	391	321	290	290
query84	277	166	130	130
query85	931	612	508	508
query86	459	289	265	265
query87	1830	1821	1752	1752
query88	3694	2781	2784	2781
query89	431	380	323	323
query90	1882	190	194	190
query91	197	192	166	166
query92	65	63	60	60
query93	1548	1508	945	945
query94	541	366	314	314
query95	804	585	472	472
query96	1072	765	358	358
query97	2667	2584	2497	2497
query98	217	209	205	205
query99	1095	1114	993	993
Total cold run time: 262560 ms
Total hot run time: 177281 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 72c001551d7af59bc946cc495ded08cd96033504, data reload: false

query1	0.01	0.01	0.01
query2	0.11	0.05	0.07
query3	0.26	0.14	0.14
query4	1.61	0.15	0.14
query5	0.25	0.23	0.23
query6	1.34	1.07	1.08
query7	0.04	0.01	0.00
query8	0.06	0.03	0.03
query9	0.41	0.33	0.33
query10	0.59	0.58	0.57
query11	0.18	0.14	0.14
query12	0.19	0.14	0.15
query13	0.46	0.48	0.48
query14	1.01	1.00	1.00
query15	0.62	0.61	0.60
query16	0.33	0.33	0.34
query17	1.16	1.13	1.09
query18	0.23	0.21	0.22
query19	2.04	1.92	1.96
query20	0.02	0.02	0.01
query21	15.50	0.21	0.14
query22	4.90	0.05	0.05
query23	16.11	0.30	0.12
query24	2.86	0.41	0.37
query25	0.12	0.06	0.06
query26	0.73	0.21	0.16
query27	0.05	0.06	0.03
query28	3.57	0.88	0.55
query29	12.50	3.99	3.20
query30	0.27	0.17	0.17
query31	2.78	0.61	0.31
query32	3.23	0.59	0.49
query33	3.16	3.24	3.28
query34	15.50	4.20	3.50
query35	3.51	3.53	3.48
query36	0.56	0.44	0.40
query37	0.09	0.07	0.07
query38	0.05	0.04	0.03
query39	0.04	0.03	0.03
query40	0.17	0.17	0.15
query41	0.09	0.04	0.03
query42	0.04	0.03	0.03
query43	0.04	0.04	0.03
Total cold run time: 96.79 s
Total hot run time: 25.13 s

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 77.14% (27/35) 🎉
Increment coverage report
Complete coverage report

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants