Skip to content

[Refactor](Multi Catalog) Unify external meta cache framework#60937

Merged
morningman merged 3 commits intoapache:masterfrom
suxiaogang223:Refact-ExternalMetaCache
Mar 21, 2026
Merged

[Refactor](Multi Catalog) Unify external meta cache framework#60937
morningman merged 3 commits intoapache:masterfrom
suxiaogang223:Refact-ExternalMetaCache

Conversation

@suxiaogang223
Copy link
Contributor

@suxiaogang223 suxiaogang223 commented Mar 1, 2026

What problem does this PR solve?

Part of #60686

Summary

This PR continues the external metadata cache refactor by introducing a unified engine-scoped cache framework and aligning multiple external catalog implementations on top of it.

The goal is not to finish every historical cache migration in one shot. The goal is to make the framework shape explicit and consistent enough that later migrations can continue on top of one model instead of adding more engine-specific cache flows.

At a high level, this PR does three things:

  • introduces a common framework for external metadata cache lifecycle, routing, invalidation, and stats
  • moves more engine-specific cache behavior behind engine adapters instead of scattered table- and util-level entry points
  • improves cross-engine consistency and test coverage while keeping legacy compatibility migration incremental

Framework View

The current framework can be viewed as three layers:

  1. manager layer: owns engine cache lifecycle and routes cache operations
  2. engine layer: each engine implements its own cache adapter on the shared framework
  3. catalog/entry layer: each engine keeps per-catalog cache groups and typed cache entries
flowchart TD
    A["ExternalMetaCacheMgr"] --> B["ExternalMetaCacheRegistry"]
    A --> C["ExternalMetaCacheRouteResolver"]
    A --> D["ExternalMetaCache(engine facade)"]

    D --> E["AbstractExternalMetaCache"]
    E --> F["CatalogEntryGroup(catalog scoped)"]
    F --> G["MetaCacheEntry(table/schema/partition/...)"]

    H["IcebergExternalMetaCache"] --> E
    I["PaimonExternalMetaCache"] --> E
    J["HudiExternalMetaCache"] --> E
    K["MaxComputeExternalMetaCache"] --> E
    L["DorisExternalMetaCache"] --> E
    M["HiveExternalMetaCache"] --> E
Loading

This structure makes a few framework boundaries explicit:

  • manager-level logic is responsible for engine registration, route resolution, and scoped invalidation dispatch
  • engine adapters own engine-specific metadata loading and cache composition
  • shared framework code owns per-catalog entry containers, generic entry access, and common lifecycle behavior

Main Changes

  • add a shared external meta cache framework under datasource.metacache
  • refactor ExternalMetaCacheMgr so registration and routing are more explicit instead of staying mixed in one manager path
  • make cache initialization and invalidation flow clearer at the framework level
  • align multiple engines with the framework model, including Iceberg, Paimon, Hudi, MaxCompute, Doris, and Hive
  • keep legacy compatibility migration incremental instead of forcing a one-PR full replacement of every historical cache path
  • add or extend framework-level and engine-level tests around routing, invalidation, and cache behavior

Engine Alignment Direction

This PR is mainly about pulling different engines closer to one framework shape.

  • Iceberg and Paimon are aligned with the framework while keeping latest snapshot metadata modeled as table-owned runtime projection
  • Hudi moves further away from ad hoc cache state and closer to framework-owned entry behavior
  • MaxCompute and Doris move more cache ownership into engine adapters
  • Hive keeps its existing complexity where necessary, but more of that logic now sits behind the framework-oriented cache layer

The important point is not that every engine is identical now. The important point is that they are being moved toward one consistent framework model.

Compatibility

  • this is primarily a framework refactor and behavior-alignment change
  • migration is still incremental, so some legacy compatibility paths are intentionally retained
  • the purpose of this PR is to reduce structural divergence across engines without requiring a full one-shot migration

Validation

  • mvn -pl fe-core -am -DskipTests compile

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?

@suxiaogang223
Copy link
Contributor Author

run external

@suxiaogang223
Copy link
Contributor Author

run buildall

@suxiaogang223 suxiaogang223 force-pushed the Refact-ExternalMetaCache branch from d86d58c to d3bbd5e Compare March 3, 2026 15:32
@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17648	4563	4318	4318
q2	q3	10646	773	524	524
q4	4678	361	254	254
q5	7550	1208	1008	1008
q6	172	175	148	148
q7	788	841	666	666
q8	9294	1443	1361	1361
q9	4882	4739	4748	4739
q10	6820	1879	1658	1658
q11	475	255	238	238
q12	727	579	472	472
q13	17759	4206	3410	3410
q14	237	231	211	211
q15	947	795	804	795
q16	755	721	682	682
q17	743	866	421	421
q18	6266	5335	5094	5094
q19	1114	987	608	608
q20	514	495	390	390
q21	4854	2001	1511	1511
q22	383	321	288	288
Total cold run time: 97252 ms
Total hot run time: 28796 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4714	4717	4601	4601
q2	q3	1798	2240	1755	1755
q4	862	1181	779	779
q5	4029	4368	4328	4328
q6	189	178	148	148
q7	1791	1673	1578	1578
q8	2523	2768	2528	2528
q9	7527	7512	7387	7387
q10	2620	2916	2460	2460
q11	563	432	422	422
q12	509	597	476	476
q13	4418	4456	3598	3598
q14	287	308	286	286
q15	875	842	808	808
q16	716	765	709	709
q17	1176	1566	1278	1278
q18	7253	6796	6800	6796
q19	1003	926	897	897
q20	2080	2191	2073	2073
q21	4000	3462	3369	3369
q22	441	421	380	380
Total cold run time: 49374 ms
Total hot run time: 46656 ms

@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

query5	4366	641	526	526
query6	323	221	201	201
query7	4211	467	299	299
query8	343	243	240	240
query9	8764	2762	2773	2762
query10	506	392	346	346
query11	16830	17650	17173	17173
query12	210	206	149	149
query13	1315	514	374	374
query14	8141	3405	3179	3179
query14_1	3000	2984	2881	2881
query15	221	210	188	188
query16	1046	525	467	467
query17	1160	805	662	662
query18	2991	462	378	378
query19	239	248	189	189
query20	152	159	153	153
query21	222	139	118	118
query22	5341	5270	4967	4967
query23	17275	16792	16706	16706
query23_1	16801	16698	16773	16698
query24	7202	1608	1221	1221
query24_1	1253	1237	1218	1218
query25	568	474	427	427
query26	1242	283	156	156
query27	2739	528	287	287
query28	4387	1854	1880	1854
query29	783	554	463	463
query30	317	248	209	209
query31	873	719	656	656
query32	81	72	67	67
query33	516	367	271	271
query34	910	909	555	555
query35	640	669	600	600
query36	1111	1143	933	933
query37	127	96	84	84
query38	2925	2922	2825	2825
query39	882	870	858	858
query39_1	818	854	850	850
query40	229	151	132	132
query41	62	59	60	59
query42	106	103	97	97
query43	372	377	347	347
query44	
query45	206	189	184	184
query46	874	991	612	612
query47	2144	2170	2071	2071
query48	313	308	224	224
query49	627	450	404	404
query50	679	276	219	219
query51	4094	4073	4094	4073
query52	106	106	100	100
query53	286	343	293	293
query54	288	264	251	251
query55	94	85	80	80
query56	307	320	344	320
query57	1357	1323	1314	1314
query58	285	279	278	278
query59	2576	2596	2398	2398
query60	349	347	319	319
query61	148	148	155	148
query62	620	575	547	547
query63	316	273	278	273
query64	4890	1279	992	992
query65	
query66	1382	493	354	354
query67	16278	16386	16319	16319
query68	
query69	393	310	276	276
query70	987	950	963	950
query71	336	312	282	282
query72	2775	2725	2348	2348
query73	541	544	321	321
query74	9946	9879	9762	9762
query75	2847	2761	2458	2458
query76	2303	1063	675	675
query77	355	371	299	299
query78	11141	11280	10646	10646
query79	2786	824	603	603
query80	1809	634	545	545
query81	550	285	263	263
query82	1028	147	115	115
query83	336	265	273	265
query84	249	117	98	98
query85	883	479	426	426
query86	417	309	297	297
query87	3107	3113	2971	2971
query88	3569	2652	2651	2651
query89	428	371	337	337
query90	2020	176	173	173
query91	162	158	134	134
query92	78	77	66	66
query93	1205	823	509	509
query94	651	327	288	288
query95	588	343	375	343
query96	640	506	225	225
query97	2469	2485	2437	2437
query98	254	224	214	214
query99	1014	987	918	918
Total cold run time: 256906 ms
Total hot run time: 183863 ms

@suxiaogang223
Copy link
Contributor Author

run buildall

1 similar comment
@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17709	4468	4288	4288
q2	q3	10651	782	519	519
q4	4690	374	255	255
q5	7579	1222	1004	1004
q6	170	173	145	145
q7	776	840	666	666
q8	9477	1461	1283	1283
q9	4882	4707	4701	4701
q10	6843	1889	1666	1666
q11	473	258	227	227
q12	748	568	476	476
q13	17773	4249	3405	3405
q14	244	233	210	210
q15	944	793	817	793
q16	761	727	682	682
q17	711	874	420	420
q18	5935	5348	5173	5173
q19	1313	968	605	605
q20	519	496	397	397
q21	4703	1971	1466	1466
q22	395	333	267	267
Total cold run time: 97296 ms
Total hot run time: 28648 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4631	4660	4690	4660
q2	q3	1778	2246	1769	1769
q4	862	1185	767	767
q5	4069	4380	4335	4335
q6	196	193	149	149
q7	1781	1681	1610	1610
q8	2465	2706	2514	2514
q9	7460	7391	7302	7302
q10	2661	2915	2435	2435
q11	553	461	412	412
q12	508	579	447	447
q13	4102	4470	3665	3665
q14	302	299	266	266
q15	850	827	951	827
q16	741	748	704	704
q17	1159	1581	1286	1286
q18	7255	6889	6649	6649
q19	890	890	915	890
q20	2149	2165	1996	1996
q21	4011	3535	3377	3377
q22	446	460	396	396
Total cold run time: 48869 ms
Total hot run time: 46456 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 184044 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 36fef6b49f10fe0219d1a35a744e234abeffc049, data reload: false

query5	4763	655	549	549
query6	333	221	194	194
query7	4212	471	283	283
query8	340	241	235	235
query9	8750	2815	2774	2774
query10	544	383	325	325
query11	17022	17597	17192	17192
query12	180	147	130	130
query13	1346	489	379	379
query14	6993	3344	3042	3042
query14_1	2924	2919	2914	2914
query15	205	196	190	190
query16	1060	485	443	443
query17	1091	740	647	647
query18	3183	459	370	370
query19	215	215	178	178
query20	142	132	139	132
query21	211	172	130	130
query22	5440	4947	4608	4608
query23	17154	16690	16572	16572
query23_1	16702	16700	16780	16700
query24	7189	1618	1221	1221
query24_1	1248	1202	1246	1202
query25	528	453	397	397
query26	1224	257	156	156
query27	2771	472	297	297
query28	4509	1891	1898	1891
query29	808	550	470	470
query30	311	252	207	207
query31	900	704	641	641
query32	79	76	69	69
query33	520	336	272	272
query34	903	918	560	560
query35	631	695	581	581
query36	1076	1098	926	926
query37	131	91	86	86
query38	2992	2962	2888	2888
query39	901	874	844	844
query39_1	836	822	816	816
query40	226	150	134	134
query41	63	59	59	59
query42	110	103	102	102
query43	382	378	355	355
query44	
query45	201	190	195	190
query46	886	978	616	616
query47	2104	2123	2057	2057
query48	326	334	231	231
query49	622	469	382	382
query50	680	282	216	216
query51	4078	4130	4086	4086
query52	109	109	95	95
query53	296	342	278	278
query54	294	286	261	261
query55	89	86	81	81
query56	317	310	328	310
query57	1348	1333	1269	1269
query58	286	273	281	273
query59	2602	2692	2547	2547
query60	325	338	325	325
query61	148	147	165	147
query62	659	594	544	544
query63	322	285	273	273
query64	4912	1375	1116	1116
query65	
query66	1436	470	368	368
query67	16460	16462	16631	16462
query68	
query69	408	339	291	291
query70	988	883	970	883
query71	358	318	315	315
query72	3033	2767	2556	2556
query73	537	554	338	338
query74	10025	9936	9801	9801
query75	2903	2732	2483	2483
query76	2300	1040	735	735
query77	371	381	315	315
query78	11258	11432	10705	10705
query79	2820	775	608	608
query80	1801	620	530	530
query81	565	284	252	252
query82	1018	147	119	119
query83	345	269	247	247
query84	256	117	96	96
query85	871	473	422	422
query86	410	312	312	312
query87	3115	3100	3008	3008
query88	3553	2678	2656	2656
query89	434	367	345	345
query90	1977	177	165	165
query91	162	153	130	130
query92	74	78	68	68
query93	1192	843	507	507
query94	631	278	304	278
query95	597	331	381	331
query96	638	515	228	228
query97	2456	2492	2417	2417
query98	234	212	215	212
query99	1029	974	906	906
Total cold run time: 257666 ms
Total hot run time: 184044 ms

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 28.80% (303/1052) 🎉
Increment coverage report
Complete coverage report

@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17679	4601	4320	4320
q2	q3	10639	783	541	541
q4	4675	374	255	255
q5	7544	1208	1007	1007
q6	184	175	146	146
q7	793	862	681	681
q8	9405	1471	1327	1327
q9	4977	4794	4611	4611
q10	6838	1871	1657	1657
q11	467	265	256	256
q12	733	565	467	467
q13	17782	4197	3439	3439
q14	233	234	215	215
q15	938	797	803	797
q16	767	731	702	702
q17	710	894	406	406
q18	6406	5358	5241	5241
q19	1283	980	617	617
q20	521	509	390	390
q21	4861	1972	1496	1496
q22	397	326	272	272
Total cold run time: 97832 ms
Total hot run time: 28843 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4627	4606	4689	4606
q2	q3	1806	2205	1783	1783
q4	872	1205	790	790
q5	4048	4471	4371	4371
q6	185	176	139	139
q7	1787	1636	1532	1532
q8	2462	2734	2573	2573
q9	7693	7460	7354	7354
q10	2626	2805	2465	2465
q11	535	461	427	427
q12	520	622	474	474
q13	4113	4576	3663	3663
q14	273	293	281	281
q15	850	809	819	809
q16	716	769	714	714
q17	1227	1547	1283	1283
q18	7179	6829	6512	6512
q19	930	886	946	886
q20	2245	2224	2010	2010
q21	3955	3500	3421	3421
q22	530	467	392	392
Total cold run time: 49179 ms
Total hot run time: 46485 ms

@doris-robot
Copy link

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

query5	4339	658	548	548
query6	329	217	209	209
query7	4216	468	282	282
query8	353	241	238	238
query9	8731	2764	2788	2764
query10	514	419	338	338
query11	17192	17470	17555	17470
query12	192	134	131	131
query13	1273	499	370	370
query14	6567	3397	3151	3151
query14_1	2985	3016	2930	2930
query15	212	209	195	195
query16	994	485	495	485
query17	1216	720	618	618
query18	3200	520	343	343
query19	203	209	181	181
query20	140	131	125	125
query21	212	136	112	112
query22	5488	5795	5032	5032
query23	17356	16777	16539	16539
query23_1	16754	16759	16719	16719
query24	7187	1624	1224	1224
query24_1	1236	1243	1227	1227
query25	550	451	406	406
query26	1237	263	154	154
query27	2777	480	296	296
query28	4458	1926	1871	1871
query29	788	565	468	468
query30	315	246	214	214
query31	889	735	668	668
query32	79	73	73	73
query33	519	332	285	285
query34	930	903	574	574
query35	643	653	603	603
query36	1096	1141	993	993
query37	130	95	80	80
query38	2976	2922	2943	2922
query39	908	884	838	838
query39_1	845	825	840	825
query40	240	150	138	138
query41	66	61	61	61
query42	111	103	104	103
query43	384	375	351	351
query44	
query45	208	192	183	183
query46	884	987	608	608
query47	2119	2122	2029	2029
query48	300	311	229	229
query49	621	472	388	388
query50	678	281	211	211
query51	4079	4066	4091	4066
query52	111	110	100	100
query53	292	336	286	286
query54	302	278	267	267
query55	92	84	88	84
query56	312	319	304	304
query57	1364	1357	1241	1241
query58	282	282	273	273
query59	2560	2682	2586	2586
query60	350	337	330	330
query61	150	140	151	140
query62	639	605	575	575
query63	321	282	278	278
query64	4871	1254	983	983
query65	
query66	1447	464	355	355
query67	16461	16527	16368	16368
query68	
query69	403	304	283	283
query70	1027	946	953	946
query71	343	306	303	303
query72	2815	2626	2491	2491
query73	563	543	330	330
query74	10047	9949	9786	9786
query75	2891	2772	2495	2495
query76	2304	1040	666	666
query77	370	375	329	329
query78	11180	11352	10676	10676
query79	1383	824	604	604
query80	1369	666	580	580
query81	570	288	257	257
query82	990	159	119	119
query83	342	276	252	252
query84	256	124	102	102
query85	969	566	516	516
query86	417	309	305	305
query87	3137	3107	2982	2982
query88	3592	2669	2673	2669
query89	422	370	348	348
query90	1994	180	180	180
query91	166	161	134	134
query92	80	71	74	71
query93	1016	839	523	523
query94	634	329	291	291
query95	600	352	386	352
query96	631	516	231	231
query97	2508	2503	2440	2440
query98	233	219	225	219
query99	967	1006	927	927
Total cold run time: 255038 ms
Total hot run time: 185041 ms

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 37.70% (406/1077) 🎉
Increment coverage report
Complete coverage report

@morningman
Copy link
Contributor

/review

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Code Review Summary — Unified External Metadata Cache Framework

Overall this is a well-structured refactoring that introduces a clean 3-level cache model (Engine → Catalog → Entry) with SPI-based plugin support. The migration of Iceberg/Paimon/Hudi/MaxCompute/Doris to engine-level adapters while keeping Hive on a legacy path is a sound incremental rollout strategy.

Critical Checkpoints

Goal & Correctness: The goal is to unify scattered per-engine cache managers into a single framework with consistent lifecycle, invalidation, and configuration. The framework structure accomplishes this, but there is a type-safety bug in the generic getSchemaCacheValue path (see inline comment) that would cause IllegalArgumentException at runtime for any engine registering a SchemaCacheKey subclass.

Concurrency: The framework relies on ConcurrentHashMap for engineCaches and CatalogEntryGroup, and Caffeine caches are inherently thread-safe. CatalogEntryGroup extends ConcurrentHashMap which is fine. The routeCatalogEngines broadcast pattern is safe because safeInvalidate catches IllegalStateException for uninitialized catalogs. No new lock hierarchy concerns introduced.

Lifecycle Management: CatalogMgr.removeCatalog() now calls catalog.onClose() before removing from maps and calls removeCatalog() on cache mgr before removing from idToCatalog — this is a correctness improvement ensuring cache cleanup while catalog is still accessible.

Configuration: CacheSpec handles enable/ttl/capacity with compatibility key mapping. Dynamic changes are supported through notifyPropertiesUpdated() which does removeCatalog + prepareCatalog.

Parallel Code Paths: The DefaultExternalMetaCache serves as fallback for engines without dedicated entries. Each ExternalTable subclass routes via getMetaCacheEngine(). The base ExternalTable.getMetaCacheEngine() throws by default — table types that forget to override will fail at runtime.

Test Coverage: Good unit test coverage for CacheSpec, MetaCacheEntry, SPI loading, Iceberg, and Paimon caches. Missing: No unit tests for HudiExternalMetaCache (the most complex engine cache with partition values, fs_view, and meta_client entries), MaxComputeExternalMetaCache, or DorisExternalMetaCache.

Performance: routeCatalogEngines broadcasts prepareCatalog to ALL 7 engines for every catalog, creating ~19 empty Caffeine cache instances per catalog regardless of catalog type. Memory impact is modest (~tens of KB per catalog) but scales linearly. Consider filtering by relevant engine or documenting this as intentional.

Observability: No new metrics or logging for cache hit/miss rates at the engine level, though Caffeine's built-in stats are exposed via MetaCacheEntry.getStats().

Issues Found

  1. [Bug] ensureTypeCompatible uses strict Class.equals() which breaks when engine-specific SchemaCacheKey subclasses are used through the generic path (see inline comment on ExternalMetaCacheMgr.java:406)

  2. [Design] routeCatalogEngines broadcasts to all engines unconditionally — wasteful but functionally safe (see inline comment on line 343)

  3. [Risk] ExternalTable.getMetaCacheEngine() throws by default — any new table type that forgets to override will fail at runtime with no compile-time safety net (see inline comment on ExternalTable.java:219)

  4. [Test Gap] No unit tests for HudiExternalMetaCache despite being the most complex engine cache implementation

@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17647	4499	4342	4342
q2	q3	10646	811	514	514
q4	4686	372	263	263
q5	7567	1210	1015	1015
q6	175	175	144	144
q7	787	860	668	668
q8	9303	1479	1316	1316
q9	4952	4760	4783	4760
q10	6265	1944	1662	1662
q11	488	268	256	256
q12	744	577	471	471
q13	18074	2997	2177	2177
q14	235	242	220	220
q15	943	800	823	800
q16	763	727	686	686
q17	735	853	448	448
q18	6052	5379	5237	5237
q19	1253	992	611	611
q20	514	491	388	388
q21	4824	2199	1628	1628
q22	411	312	258	258
Total cold run time: 97064 ms
Total hot run time: 27864 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4626	4592	4641	4592
q2	q3	3890	4320	3807	3807
q4	887	1236	775	775
q5	4091	4444	4307	4307
q6	183	177	139	139
q7	1765	1682	1515	1515
q8	2462	2701	3123	2701
q9	7588	7381	7364	7364
q10	3793	4012	3670	3670
q11	610	455	417	417
q12	505	583	461	461
q13	2716	3225	2381	2381
q14	282	304	264	264
q15	861	797	794	794
q16	734	783	716	716
q17	1143	1426	1376	1376
q18	7224	6716	6692	6692
q19	867	916	891	891
q20	2069	2171	2029	2029
q21	3932	3526	3463	3463
q22	471	542	382	382
Total cold run time: 50699 ms
Total hot run time: 48736 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 154005 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 6e221d85dcc1f0d60f622b4a997804a1b31cd8fa, data reload: false

query5	4325	650	517	517
query6	322	242	235	235
query7	4213	469	281	281
query8	345	276	239	239
query9	8715	2826	2791	2791
query10	500	425	377	377
query11	7456	5902	5657	5657
query12	190	137	126	126
query13	1266	466	347	347
query14	5731	3851	3575	3575
query14_1	2903	2847	2842	2842
query15	204	194	178	178
query16	998	477	469	469
query17	1120	736	636	636
query18	2484	446	358	358
query19	227	210	191	191
query20	143	134	131	131
query21	232	140	125	125
query22	4916	5042	4852	4852
query23	16608	16213	15973	15973
query23_1	15656	15961	15691	15691
query24	7790	1646	1253	1253
query24_1	1263	1229	1225	1225
query25	566	494	441	441
query26	1244	305	152	152
query27	2724	498	294	294
query28	4511	1902	1882	1882
query29	847	562	478	478
query30	305	252	207	207
query31	1367	1296	1210	1210
query32	87	79	72	72
query33	513	328	289	289
query34	944	920	559	559
query35	645	705	610	610
query36	1132	1148	980	980
query37	128	92	87	87
query38	2981	3007	2912	2912
query39	877	865	864	864
query39_1	820	825	820	820
query40	232	154	140	140
query41	62	64	59	59
query42	306	310	303	303
query43	244	254	232	232
query44	
query45	196	192	184	184
query46	873	1003	655	655
query47	2100	2136	2060	2060
query48	323	339	247	247
query49	634	453	387	387
query50	684	284	212	212
query51	4134	4119	4098	4098
query52	291	294	284	284
query53	292	337	292	292
query54	304	279	271	271
query55	95	89	84	84
query56	330	343	324	324
query57	1380	1355	1285	1285
query58	295	294	280	280
query59	1348	1437	1277	1277
query60	336	355	331	331
query61	154	153	147	147
query62	626	593	545	545
query63	318	293	289	289
query64	5059	1283	1009	1009
query65	
query66	1438	458	365	365
query67	16416	16521	16426	16426
query68	
query69	381	309	289	289
query70	1016	957	978	957
query71	346	324	315	315
query72	2855	2695	2460	2460
query73	530	544	325	325
query74	10052	9952	9752	9752
query75	2879	2793	2517	2517
query76	2298	1037	678	678
query77	362	388	319	319
query78	11290	11432	10684	10684
query79	1172	800	614	614
query80	1335	643	556	556
query81	579	283	247	247
query82	968	147	118	118
query83	344	268	243	243
query84	251	124	103	103
query85	911	492	447	447
query86	428	302	301	301
query87	3141	3110	3008	3008
query88	3596	2708	2684	2684
query89	434	388	350	350
query90	2031	189	185	185
query91	173	162	136	136
query92	81	80	73	73
query93	1022	837	516	516
query94	646	282	314	282
query95	599	350	327	327
query96	631	520	232	232
query97	2459	2496	2407	2407
query98	231	223	221	221
query99	1030	995	907	907
Total cold run time: 234352 ms
Total hot run time: 154005 ms

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 34.18% (417/1220) 🎉
Increment coverage report
Complete coverage report

@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17652	4492	4323	4323
q2	q3	10657	794	515	515
q4	4674	360	250	250
q5	7534	1193	1033	1033
q6	176	178	148	148
q7	793	846	675	675
q8	9305	1461	1377	1377
q9	4860	4725	4743	4725
q10	6297	1921	1623	1623
q11	459	256	246	246
q12	743	576	473	473
q13	18039	2929	2207	2207
q14	237	228	214	214
q15	933	812	839	812
q16	749	735	663	663
q17	706	921	412	412
q18	5983	5393	5260	5260
q19	1128	1009	601	601
q20	514	490	397	397
q21	4505	2083	1588	1588
q22	361	354	307	307
Total cold run time: 96305 ms
Total hot run time: 27849 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4720	4587	4571	4571
q2	q3	3948	4379	3943	3943
q4	896	1208	795	795
q5	4048	4407	4388	4388
q6	189	177	139	139
q7	1774	1640	1508	1508
q8	2570	2753	2580	2580
q9	7603	7558	7725	7558
q10	3855	4050	3646	3646
q11	494	433	431	431
q12	500	607	464	464
q13	2707	3367	2356	2356
q14	283	306	278	278
q15	901	835	814	814
q16	743	800	730	730
q17	1190	1505	1394	1394
q18	7370	7055	6643	6643
q19	905	883	905	883
q20	2147	2192	2005	2005
q21	4088	3599	3418	3418
q22	487	442	418	418
Total cold run time: 51418 ms
Total hot run time: 48962 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 153786 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 3ce0ecafec79ea23744463a904bcd6753faab3d3, data reload: false

query5	4329	649	519	519
query6	314	225	223	223
query7	4230	482	268	268
query8	339	252	231	231
query9	8733	2775	2793	2775
query10	505	407	384	384
query11	7282	5920	5701	5701
query12	190	129	124	124
query13	1272	472	360	360
query14	5760	3889	3568	3568
query14_1	2838	2818	2825	2818
query15	203	201	183	183
query16	1006	479	458	458
query17	1112	734	626	626
query18	2451	450	367	367
query19	216	211	187	187
query20	137	136	132	132
query21	229	144	131	131
query22	4828	5051	4812	4812
query23	16571	16063	15765	15765
query23_1	15845	15963	15857	15857
query24	7488	1687	1252	1252
query24_1	1285	1297	1338	1297
query25	666	492	419	419
query26	1233	264	160	160
query27	2812	525	313	313
query28	4528	1883	1898	1883
query29	806	559	480	480
query30	313	249	213	213
query31	1347	1290	1224	1224
query32	78	74	78	74
query33	507	343	279	279
query34	927	936	557	557
query35	628	690	604	604
query36	1040	1122	991	991
query37	129	106	85	85
query38	2988	2933	2973	2933
query39	910	982	874	874
query39_1	832	847	830	830
query40	227	149	138	138
query41	62	60	59	59
query42	307	309	304	304
query43	285	253	231	231
query44	
query45	200	193	180	180
query46	889	985	605	605
query47	2101	2118	2030	2030
query48	315	318	235	235
query49	621	456	383	383
query50	702	279	212	212
query51	4149	4067	4132	4067
query52	287	298	288	288
query53	289	339	277	277
query54	299	271	260	260
query55	89	91	87	87
query56	320	323	297	297
query57	1357	1387	1261	1261
query58	291	288	275	275
query59	1343	1435	1297	1297
query60	350	339	320	320
query61	146	149	152	149
query62	613	566	551	551
query63	311	281	277	277
query64	5008	1284	1010	1010
query65	
query66	1469	463	354	354
query67	16532	16472	16453	16453
query68	
query69	411	315	288	288
query70	999	930	972	930
query71	352	318	302	302
query72	2849	2680	2456	2456
query73	545	560	321	321
query74	10043	9929	9747	9747
query75	2867	2755	2470	2470
query76	2268	1024	672	672
query77	370	381	309	309
query78	11207	11393	10697	10697
query79	1158	814	620	620
query80	1319	645	535	535
query81	556	294	248	248
query82	1008	151	121	121
query83	340	273	246	246
query84	255	123	99	99
query85	893	475	448	448
query86	437	308	322	308
query87	3154	3106	2991	2991
query88	3603	2683	2655	2655
query89	421	370	348	348
query90	1996	191	176	176
query91	171	157	142	142
query92	79	76	69	69
query93	1012	826	500	500
query94	646	311	295	295
query95	611	342	380	342
query96	637	522	230	230
query97	2453	2520	2418	2418
query98	236	218	213	213
query99	990	986	912	912
Total cold run time: 234311 ms
Total hot run time: 153786 ms

@doris-robot
Copy link

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.56% (19646/37381)
Line Coverage 36.18% (183416/506986)
Region Coverage 32.45% (142149/438100)
Branch Coverage 33.42% (61716/184658)

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 71.43% (26145/36603)
Line Coverage 54.22% (274070/505433)
Region Coverage 51.44% (227468/442237)
Branch Coverage 52.85% (97898/185222)

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 44.02% (537/1220) 🎉
Increment coverage report
Complete coverage report

@suxiaogang223 suxiaogang223 force-pushed the Refact-ExternalMetaCache branch from 5f7fd7a to 9fd79d3 Compare March 16, 2026 07:55
@suxiaogang223
Copy link
Contributor Author

run buildall

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 42.86% (780/1820) 🎉
Increment coverage report
Complete coverage report

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17632	4492	4322	4322
q2	q3	10640	839	528	528
q4	4675	362	258	258
q5	7614	1219	1037	1037
q6	174	174	148	148
q7	780	844	688	688
q8	9697	1461	1346	1346
q9	5397	4761	4767	4761
q10	6351	1953	1707	1707
q11	503	258	236	236
q12	763	597	464	464
q13	18066	2944	2202	2202
q14	234	245	215	215
q15	q16	746	737	677	677
q17	730	867	417	417
q18	6204	5456	5262	5262
q19	1382	997	629	629
q20	539	499	374	374
q21	4476	1979	1596	1596
q22	403	327	261	261
Total cold run time: 97006 ms
Total hot run time: 27128 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4791	4768	4639	4639
q2	q3	3956	4333	3850	3850
q4	883	1229	819	819
q5	4087	4396	4409	4396
q6	183	180	151	151
q7	1814	1644	1568	1568
q8	2553	2729	2606	2606
q9	7571	7389	7314	7314
q10	3809	3993	3611	3611
q11	527	456	440	440
q12	543	600	461	461
q13	2704	3326	2411	2411
q14	290	314	280	280
q15	q16	721	773	730	730
q17	1205	1348	1347	1347
q18	7279	6784	6667	6667
q19	863	918	887	887
q20	2121	2139	1980	1980
q21	4005	3514	3334	3334
q22	510	426	372	372
Total cold run time: 50415 ms
Total hot run time: 47863 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 168966 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 9fd79d3fc1ccae32b28df4770b1732bd2b18d1b3, data reload: false

query5	4355	642	533	533
query6	350	235	214	214
query7	4207	472	264	264
query8	357	248	240	240
query9	8732	2755	2758	2755
query10	501	366	355	355
query11	7017	5074	4889	4889
query12	193	132	127	127
query13	1275	463	358	358
query14	5724	3735	3466	3466
query14_1	2862	2852	2824	2824
query15	205	193	175	175
query16	1011	491	444	444
query17	1134	717	624	624
query18	2468	456	354	354
query19	213	213	194	194
query20	139	128	127	127
query21	221	139	115	115
query22	13281	14187	14416	14187
query23	16214	16053	15808	15808
query23_1	15786	16378	15650	15650
query24	7171	1672	1240	1240
query24_1	1242	1238	1249	1238
query25	591	534	416	416
query26	1234	267	146	146
query27	2782	475	298	298
query28	4457	1877	1854	1854
query29	815	560	473	473
query30	303	230	194	194
query31	1005	952	863	863
query32	84	69	77	69
query33	515	325	280	280
query34	897	872	530	530
query35	652	696	590	590
query36	1066	1134	947	947
query37	135	92	86	86
query38	2959	2938	2924	2924
query39	851	828	805	805
query39_1	788	801	793	793
query40	229	153	140	140
query41	64	66	62	62
query42	272	259	250	250
query43	246	247	223	223
query44	
query45	198	188	182	182
query46	914	985	601	601
query47	2162	2126	2074	2074
query48	304	311	226	226
query49	647	457	393	393
query50	676	286	219	219
query51	4110	4205	4045	4045
query52	262	269	261	261
query53	300	342	286	286
query54	315	269	275	269
query55	92	91	84	84
query56	324	328	311	311
query57	1914	1850	1719	1719
query58	281	281	277	277
query59	2792	2922	2781	2781
query60	345	339	341	339
query61	158	146	140	140
query62	621	585	551	551
query63	310	283	276	276
query64	5040	1301	1016	1016
query65	
query66	1457	469	355	355
query67	24278	24254	24356	24254
query68	
query69	414	314	289	289
query70	996	910	966	910
query71	339	319	305	305
query72	2794	2618	2415	2415
query73	530	547	314	314
query74	9603	9598	9396	9396
query75	2849	2794	2458	2458
query76	2300	1035	673	673
query77	367	408	314	314
query78	10984	11082	10470	10470
query79	3081	779	580	580
query80	1735	644	527	527
query81	578	263	230	230
query82	971	157	120	120
query83	335	275	247	247
query84	276	124	98	98
query85	886	488	436	436
query86	490	315	293	293
query87	3166	3151	3004	3004
query88	4322	2687	2683	2683
query89	429	369	348	348
query90	2096	180	178	178
query91	172	167	137	137
query92	86	74	69	69
query93	2761	824	504	504
query94	646	289	279	279
query95	584	409	320	320
query96	636	517	228	228
query97	2489	2478	2403	2403
query98	245	221	221	221
query99	1012	993	906	906
Total cold run time: 254748 ms
Total hot run time: 168966 ms

@hello-stephen
Copy link
Contributor

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.65% (19708/37429)
Line Coverage 36.23% (184229/508473)
Region Coverage 32.40% (142149/438734)
Branch Coverage 33.57% (62147/185125)

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 71.55% (26212/36635)
Line Coverage 54.35% (275447/506760)
Region Coverage 51.58% (228405/442783)
Branch Coverage 53.02% (98411/185607)

@morningman
Copy link
Contributor

/review

morningman
morningman previously approved these changes Mar 20, 2026
@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Mar 20, 2026
@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.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Code Review: [Refactor](Multi Catalog) Unify external meta cache framework

Reviewed ~95 files (6810 additions, 3610 deletions). The new 3-layer framework (Manager → Engine → Entry) is well-structured and the MetaCacheEntryDef/CatalogEntryGroup/CacheSpec abstractions are clean. Below are findings organized by the Critical Checkpoints from Part 1.3.

Critical Checkpoint Analysis

Goal & correctness: The PR unifies 6+ engine-specific cache implementations under a common framework. The refactoring preserves existing cache semantics (TTL, capacity, invalidation granularity). Tests cover routing, delegation, and basic cache operations.

Modification scope: Large but focused — all changes serve the unification goal. No unrelated changes detected.

Concurrency: See inline comments. getCatalogProperties() can throw unchecked IllegalStateException on query-path threads racing with catalog removal. CatalogMgr.removeCatalog() calls onClose() (blocking I/O) while holding writeLock and before removing catalog from maps, exposing partially torn-down state.

Configuration: CacheSpec introduces property-based config (meta.cache.<engine>.<entry>.*). Dynamic changes are handled via prepareCatalogByEngine re-initialization on property change events in ExternalCatalog.notifyCachePropertiesChanged(). This looks correct.

Incompatible changes: catalog_meta_cache_statistics schema changed from 4 columns to 23. The FE filterColumns mechanism provides partial backward compatibility (new FE + old BE works). However, new BE + old FE would fail. Since this is an information_schema table (not user data), impact is limited to monitoring queries during rolling upgrade.

Parallel code paths: invalidateCatalog vs invalidateCatalogEntries vs removeCatalog — semantics are distinct and correctly separated. Engine-specific invalidateCatalog overrides (Iceberg, Hudi) correctly call cleanup before super.invalidateCatalog().

Test coverage: Route resolution, schema cache delegation, Doris/Hudi engine caches have tests. Missing: no test for concurrent catalog removal + cache access race; no test for Iceberg/Paimon/MaxCompute engine caches; no test for CacheSpec property parsing; no test for MetaCacheEntryStats collection accuracy.

Observability: The expanded catalog_meta_cache_statistics table (23 columns with hit rates, load times, eviction counts, etc.) is a significant improvement over the previous 4-column version.

Performance: safeInvalidate short-circuits via isCatalogInitialized check — good. Cache loaders use memoized suppliers for lazy initialization (Iceberg snapshots, Paimon projections) — good. No obvious hot-path regressions.

See inline comments for specific issues.

@github-actions github-actions bot removed the approved Indicates a PR has been approved by one committer. label Mar 20, 2026
@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17628	4453	4302	4302
q2	q3	10650	785	518	518
q4	4681	355	255	255
q5	7607	1212	1018	1018
q6	178	172	147	147
q7	801	849	673	673
q8	9298	1478	1435	1435
q9	4927	4753	4695	4695
q10	6263	1923	1652	1652
q11	457	267	245	245
q12	685	589	467	467
q13	18021	2915	2179	2179
q14	231	237	214	214
q15	q16	735	751	686	686
q17	730	833	480	480
q18	5916	5444	5212	5212
q19	1248	993	628	628
q20	542	506	387	387
q21	4676	1840	1418	1418
q22	539	385	287	287
Total cold run time: 95813 ms
Total hot run time: 26898 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4807	4621	4597	4597
q2	q3	3913	4335	3812	3812
q4	878	1209	814	814
q5	4063	4371	4348	4348
q6	186	182	141	141
q7	1786	1654	1524	1524
q8	2520	2699	2594	2594
q9	7717	7362	7340	7340
q10	3794	3973	3555	3555
q11	500	440	426	426
q12	523	642	454	454
q13	2802	3240	2379	2379
q14	292	297	266	266
q15	q16	733	753	718	718
q17	1170	1333	1411	1333
q18	7300	6719	6684	6684
q19	911	890	946	890
q20	2163	2239	1981	1981
q21	4157	3504	3281	3281
q22	476	419	378	378
Total cold run time: 50691 ms
Total hot run time: 47515 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 168515 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 4351bc2b13676f9216574eb4612588a1fd59757c, data reload: false

query5	4333	637	502	502
query6	342	236	218	218
query7	4218	476	265	265
query8	368	256	231	231
query9	8713	2711	2694	2694
query10	516	407	349	349
query11	6987	5080	4866	4866
query12	183	138	124	124
query13	1288	466	349	349
query14	5705	3697	3502	3502
query14_1	2809	2851	2858	2851
query15	212	197	177	177
query16	988	476	462	462
query17	983	747	623	623
query18	2448	461	361	361
query19	223	218	190	190
query20	135	130	129	129
query21	222	143	111	111
query22	13215	14101	14585	14101
query23	16255	15872	15500	15500
query23_1	15852	15695	15372	15372
query24	7240	1600	1214	1214
query24_1	1218	1211	1222	1211
query25	558	477	412	412
query26	1223	258	143	143
query27	2801	487	294	294
query28	4458	1817	1826	1817
query29	825	592	514	514
query30	302	226	192	192
query31	1006	963	869	869
query32	87	71	67	67
query33	514	329	282	282
query34	903	874	533	533
query35	649	738	620	620
query36	1072	1125	986	986
query37	136	92	85	85
query38	2951	2944	2896	2896
query39	867	836	809	809
query39_1	801	785	786	785
query40	241	147	136	136
query41	63	59	57	57
query42	257	257	253	253
query43	240	240	218	218
query44	
query45	203	194	179	179
query46	881	978	615	615
query47	2069	2136	2426	2136
query48	304	317	240	240
query49	631	457	423	423
query50	692	300	215	215
query51	4077	4054	4030	4030
query52	261	277	267	267
query53	292	336	285	285
query54	297	269	271	269
query55	92	89	86	86
query56	325	334	320	320
query57	1781	1707	1622	1622
query58	284	313	278	278
query59	2806	2903	2733	2733
query60	345	342	329	329
query61	173	154	157	154
query62	626	582	540	540
query63	307	278	272	272
query64	5081	1294	1011	1011
query65	
query66	1461	452	346	346
query67	24410	24341	24230	24230
query68	
query69	407	314	287	287
query70	944	894	934	894
query71	341	306	304	304
query72	2828	2762	2592	2592
query73	554	568	317	317
query74	9627	9593	9414	9414
query75	2901	2781	2523	2523
query76	2298	1045	680	680
query77	374	397	320	320
query78	10939	11020	10414	10414
query79	1150	838	583	583
query80	1376	681	570	570
query81	560	263	234	234
query82	993	160	120	120
query83	388	277	253	253
query84	300	133	108	108
query85	1027	509	453	453
query86	427	305	300	300
query87	3111	3090	3007	3007
query88	3562	2633	2656	2633
query89	421	387	346	346
query90	1949	175	178	175
query91	174	173	138	138
query92	73	75	69	69
query93	923	839	502	502
query94	660	323	305	305
query95	591	338	319	319
query96	648	517	231	231
query97	2443	2489	2431	2431
query98	238	219	219	219
query99	998	990	918	918
Total cold run time: 249379 ms
Total hot run time: 168515 ms

@doris-robot
Copy link

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.80% (19850/37595)
Line Coverage 36.28% (185241/510623)
Region Coverage 32.55% (143556/440981)
Branch Coverage 33.74% (62830/186210)

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 73.36% (26996/36798)
Line Coverage 56.80% (289050/508913)
Region Coverage 54.24% (241399/445032)
Branch Coverage 55.92% (104394/186698)

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Mar 20, 2026
@github-actions
Copy link
Contributor

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

@morningman morningman merged commit 010f470 into apache:master Mar 21, 2026
29 of 31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants