Skip to content

[fix](be) Preserve tablet ID in synchronous file cache writes - #68310

Open
liaoxin01 wants to merge 2 commits into
apache:masterfrom
liaoxin01:codex/fix-file-cache-tablet-id
Open

liaoxin01 wants to merge 2 commits into
apache:masterfrom
liaoxin01:codex/fix-file-cache-tablet-id

Conversation

@liaoxin01

@liaoxin01 liaoxin01 commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary:

The synchronous CachedRemoteFileReader path constructed CacheContext without copying the reader tablet ID. Cache misses were downloaded correctly, but newly created FileBlock and persisted block metadata used the no-tablet sentinel 0. Runtime per-tablet cache inspection and TTL registration therefore could not associate those new blocks with their Doris tablet.

This change propagates the Doris tablet ID into the synchronous cache context. External readers are normalized to the existing no-tablet sentinel 0 for both synchronous and asynchronous writes, and TTL registration defensively accepts only positive tablet IDs.

Release note

Fix synchronous file cache blocks to retain their Doris tablet ID while preserving no-tablet metadata for external readers.

Check List (For Author)

  • Test
    • Regression test
    • Unit Test
      • Added synchronous Doris-reader coverage for tablet ID 10086.
      • Added external-reader coverage for synchronous and asynchronous cache writes using tablet ID 0.
      • The modified IO library and test object compile successfully.
      • Full local test execution was blocked before linking by stale local third-party Thrift/AWS SDK headers unrelated to this change.
    • Manual test
    • No need to test or manual test. Explain why:
  • Behavior changed:
    • No user-visible behavior change.
    • Yes.
  • Does this need documentation?
    • No.
    • Yes.

### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary:

Synchronous cache population could create file cache blocks with tablet ID 0 even when the remote reader had a valid tablet ID. This made per-tablet cache metadata and TTL management unable to find successfully downloaded blocks. Propagate the reader tablet ID into the cache context before creating blocks and add a unit test for the warm-up synchronous write path.

### Release note

Fix file cache blocks created by synchronous reads to retain their tablet ID.

### Check List (For Author)

- Test
    - [x] Unit Test
      - Added AsyncCachedRemoteFileReaderTest.sync_write_path_preserves_tablet_id.
      - The modified IO library and test object compile successfully.
      - Full local execution is blocked by stale local third-party Thrift/AWS SDK headers unrelated to this change.
- Behavior changed:
    - [x] Yes. Synchronously populated cache blocks now retain their tablet ownership metadata.
- Does this need documentation?
    - [x] No.
@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?

@liaoxin01

Copy link
Copy Markdown
Contributor Author

/review

@liaoxin01

Copy link
Copy Markdown
Contributor Author

run buildall

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Request changes: the fresh positive-ID propagation works, but two scope/lifecycle gaps remain.

  • External cached readers retain the unset tablet_id == -1; the new unconditional sync-path assignment changes their persisted metadata namespace and feeds an invalid ID into tablet TTL maintenance.
  • Positive IDs survive persistence, but startup/direct restoration never repopulates the process-local TTL tablet registry, so TTL changes or expiry while the BE is down are not reconciled for fully cached tablets.

Checkpoint conclusions:

  • Goal and tests: the added warm-up test proves a fresh synchronous Doris block keeps ID 10086, but it does not prove external-reader behavior or persistence/restart TTL reconciliation.
  • Scope, parallel paths, and compatibility: sync, async, remote-only, peer, prefetch, existing-cell reuse, metadata direct load, and startup load were traced. The external sentinel issue and restart registration issue are the only substantiated defects; legacy ID-0 cache entries are disposable and were not treated as a separate blocker.
  • Concurrency and lifecycle: no new race, lock-order, atomic, ownership, or static-initialization problem was found. The lifecycle defect is missing registration after restore, not unsafe synchronization.
  • Error handling, memory, configuration, protocols, and data correctness: no new ignored status, allocation-accounting issue, configuration item, FE/BE protocol change, transaction/EditLog path, user-data visibility issue, or security boundary is involved.
  • Performance and observability: the valid positive-ID assignment is negligible; invalid external TTL queue work is covered by the first inline finding. Existing logging/metrics do not correct it.
  • Validation: this was a static-only review as required; I did not run builds or tests. The author reports compilation of the modified IO library/test object, while full local test execution was blocked.
  • User focus: no additional review focus was provided.

Review completion: two rounds converged; both Round 2 reviewers returned NO_NEW_VALUABLE_FINDINGS. The final changed-file sweep found no unresolved candidate, and the live duplicate fence was empty on reviewed head 5d513aec8229a19d71ec1c2070b9ad680ddfc33b.

Comment thread be/src/io/cache/cached_remote_file_reader.cpp
Comment thread be/test/io/cache/cached_remote_file_reader_test.cpp
@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	18004	3974	3882	3882
q2	2256	361	302	302
q3	10043	1468	800	800
q4	4685	487	362	362
q5	7462	940	552	552
q6	183	172	137	137
q7	760	798	594	594
q8	9293	1428	1542	1428
q9	5434	4211	4185	4185
q10	6822	1347	997	997
q11	430	269	248	248
q12	630	419	305	305
q13	18076	2611	1997	1997
q14	265	260	229	229
q15	q16	726	724	658	658
q17	1736	1091	1002	1002
q18	6482	5596	5520	5520
q19	1159	1240	1062	1062
q20	488	385	263	263
q21	5185	3322	3004	3004
q22	445	367	304	304
Total cold run time: 100564 ms
Total hot run time: 27831 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4619	4704	4366	4366
q2	736	588	549	549
q3	4826	5286	4584	4584
q4	2207	2338	1447	1447
q5	4655	4486	4565	4486
q6	227	173	129	129
q7	1875	1728	1516	1516
q8	2298	2119	2044	2044
q9	7389	7342	7235	7235
q10	3741	3626	3072	3072
q11	507	367	334	334
q12	707	698	500	500
q13	2299	2607	1990	1990
q14	270	279	253	253
q15	q16	661	689	589	589
q17	7294	6704	6639	6639
q18	11837	11018	11719	11018
q19	1091	991	1046	991
q20	2213	2178	1904	1904
q21	4986	4107	4302	4107
q22	526	436	411	411
Total cold run time: 64964 ms
Total hot run time: 58164 ms

@hello-stephen

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

query5	4333	607	455	455
query6	425	214	202	202
query7	4817	557	290	290
query8	331	180	160	160
query9	8818	3992	3983	3983
query10	450	310	260	260
query11	5789	3536	3230	3230
query12	138	89	83	83
query13	1257	558	424	424
query14	6530	4523	4198	4198
query14_1	3966	3942	3946	3942
query15	200	200	185	185
query16	988	456	418	418
query17	893	686	549	549
query18	2421	470	334	334
query19	204	180	141	141
query20	83	81	82	81
query21	224	132	116	116
query22	12937	12991	12761	12761
query23	13979	13106	12555	12555
query23_1	12650	12607	12547	12547
query24	7141	1141	733	733
query24_1	664	736	694	694
query25	562	446	378	378
query26	1273	327	164	164
query27	2690	553	330	330
query28	4596	1957	1971	1957
query29	1625	730	528	528
query30	300	226	177	177
query31	898	762	646	646
query32	159	95	95	95
query33	551	321	251	251
query34	1212	1099	630	630
query35	724	755	653	653
query36	812	801	709	709
query37	152	107	92	92
query38	1822	1752	1685	1685
query39	677	703	665	665
query39_1	658	649	654	649
query40	225	124	102	102
query41	72	69	69	69
query42	93	96	96	96
query43	339	354	296	296
query44	1348	716	717	716
query45	185	177	164	164
query46	1072	1139	752	752
query47	1505	1520	1400	1400
query48	427	474	304	304
query49	581	391	297	297
query50	965	343	251	251
query51	10343	10457	10399	10399
query52	86	87	74	74
query53	238	257	179	179
query54	249	212	219	212
query55	81	73	73	73
query56	239	208	199	199
query57	1467	1447	1348	1348
query58	290	256	243	243
query59	1988	2072	1873	1873
query60	290	244	224	224
query61	144	148	148	148
query62	407	318	263	263
query63	218	180	177	177
query64	2788	985	781	781
query65	3470	3436	3444	3436
query66	1843	414	298	298
query67	19978	19690	19923	19690
query68	3165	1500	932	932
query69	417	355	265	265
query70	876	822	823	822
query71	291	232	220	220
query72	2639	2497	2286	2286
query73	825	793	418	418
query74	4589	4517	4292	4292
query75	2288	2275	1920	1920
query76	2313	1101	753	753
query77	356	395	302	302
query78	9184	9134	8570	8570
query79	1228	1227	729	729
query80	566	451	362	362
query81	542	326	283	283
query82	655	171	129	129
query83	299	225	216	216
query84	313	146	112	112
query85	883	472	381	381
query86	334	243	236	236
query87	1984	1970	1852	1852
query88	3700	2722	2721	2721
query89	361	289	245	245
query90	1927	187	186	186
query91	173	159	129	129
query92	108	88	90	88
query93	1473	1449	869	869
query94	529	333	287	287
query95	672	383	332	332
query96	992	778	380	380
query97	2447	2418	2323	2323
query98	160	151	150	150
query99	720	729	610	610
Total cold run time: 235515 ms
Total hot run time: 152661 ms

@hello-stephen

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

query1	0.01	0.01	0.00
query2	0.10	0.05	0.04
query3	0.27	0.13	0.13
query4	1.62	0.13	0.13
query5	0.24	0.22	0.22
query6	1.17	0.92	0.89
query7	0.07	0.01	0.00
query8	0.05	0.04	0.04
query9	0.39	0.33	0.34
query10	0.57	0.56	0.57
query11	0.20	0.14	0.14
query12	0.18	0.15	0.14
query13	0.46	0.46	0.47
query14	0.95	0.98	0.94
query15	0.61	0.58	0.58
query16	0.30	0.33	0.33
query17	1.08	1.12	1.09
query18	0.21	0.20	0.20
query19	2.03	1.96	1.86
query20	0.02	0.02	0.01
query21	15.42	0.21	0.13
query22	4.81	0.05	0.06
query23	16.13	0.31	0.12
query24	2.93	0.42	0.32
query25	0.12	0.05	0.04
query26	0.72	0.20	0.15
query27	0.05	0.04	0.03
query28	3.58	0.80	0.35
query29	12.47	4.01	3.18
query30	0.28	0.19	0.17
query31	2.77	0.56	0.32
query32	3.22	0.60	0.48
query33	3.10	3.17	3.23
query34	15.48	3.94	3.26
query35	3.24	3.22	3.20
query36	0.56	0.43	0.42
query37	0.08	0.06	0.06
query38	0.05	0.04	0.04
query39	0.03	0.03	0.03
query40	0.17	0.15	0.14
query41	0.08	0.03	0.03
query42	0.04	0.03	0.03
query43	0.05	0.04	0.03
Total cold run time: 95.91 s
Total hot run time: 23.84 s

### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary:

External cached readers keep the unset FileReaderOptions tablet ID of -1. Propagating that value into CacheContext would persist an invalid metadata namespace and enqueue an invalid tablet for TTL maintenance. Normalize external readers to the cache no-tablet sentinel 0, accept only positive IDs in TTL registration, and cover both synchronous and asynchronous external cache writes.

### Release note

Normalize external file cache metadata to use tablet ID 0.

### Check List (For Author)

- Test
    - [x] Unit Test
      - Added external reader coverage for synchronous and asynchronous cache writes.
      - The modified IO library and test object compile successfully.
- Behavior changed:
    - [x] No user-visible behavior change.
- Does this need documentation?
    - [x] No.
@liaoxin01

Copy link
Copy Markdown
Contributor Author

/review

@liaoxin01

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17698	3865	3821	3821
q2	2137	351	312	312
q3	10110	1366	797	797
q4	4688	476	358	358
q5	7474	805	533	533
q6	178	164	133	133
q7	731	773	603	603
q8	9339	1492	1567	1492
q9	5340	4115	4124	4115
q10	6811	1330	1013	1013
q11	429	266	237	237
q12	638	431	291	291
q13	18044	2614	1980	1980
q14	260	256	239	239
q15	q16	734	718	659	659
q17	1697	1100	1002	1002
q18	6405	5572	5559	5559
q19	1158	1267	1066	1066
q20	474	373	254	254
q21	5443	2988	3028	2988
q22	452	371	302	302
Total cold run time: 100240 ms
Total hot run time: 27754 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4525	4402	4439	4402
q2	728	557	539	539
q3	4741	5146	4711	4711
q4	2209	2307	1456	1456
q5	4504	4479	4467	4467
q6	235	180	133	133
q7	1878	1754	1504	1504
q8	2325	2013	1979	1979
q9	7405	7222	6807	6807
q10	3630	3552	3088	3088
q11	510	377	339	339
q12	698	708	509	509
q13	2268	2602	1990	1990
q14	263	269	242	242
q15	q16	665	686	604	604
q17	7234	6670	6646	6646
q18	11825	11087	11750	11087
q19	1102	1000	1004	1000
q20	2206	2209	1902	1902
q21	4921	4057	4260	4057
q22	529	447	403	403
Total cold run time: 64401 ms
Total hot run time: 57865 ms

@hello-stephen

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

query5	4321	617	474	474
query6	439	218	198	198
query7	4850	535	286	286
query8	328	197	171	171
query9	8808	3920	3943	3920
query10	440	327	256	256
query11	5825	3527	3230	3230
query12	150	93	86	86
query13	1264	595	439	439
query14	6553	4505	4214	4214
query14_1	3960	3984	3935	3935
query15	201	197	181	181
query16	1006	415	441	415
query17	913	657	533	533
query18	2431	444	336	336
query19	203	180	148	148
query20	81	82	92	82
query21	218	132	112	112
query22	13023	12968	12814	12814
query23	13991	12967	12361	12361
query23_1	12540	12521	12476	12476
query24	7214	1147	658	658
query24_1	694	699	716	699
query25	564	438	375	375
query26	1142	308	168	168
query27	2676	542	358	358
query28	4539	1969	1974	1969
query29	1564	704	513	513
query30	300	223	182	182
query31	884	757	633	633
query32	146	98	94	94
query33	521	317	257	257
query34	1172	1127	639	639
query35	751	746	669	669
query36	809	794	690	690
query37	139	103	97	97
query38	1836	1749	1718	1718
query39	675	696	656	656
query39_1	674	652	644	644
query40	228	128	107	107
query41	74	67	65	65
query42	98	94	92	92
query43	334	341	302	302
query44	1350	716	705	705
query45	200	176	164	164
query46	1038	1171	697	697
query47	1483	1504	1381	1381
query48	409	398	294	294
query49	590	435	290	290
query50	941	336	246	246
query51	10502	10655	10078	10078
query52	84	90	80	80
query53	241	244	177	177
query54	245	202	188	188
query55	82	75	68	68
query56	218	218	224	218
query57	1399	1444	1417	1417
query58	284	264	248	248
query59	1977	2038	1845	1845
query60	279	238	220	220
query61	137	149	142	142
query62	392	310	263	263
query63	220	166	174	166
query64	2607	983	781	781
query65	3448	3400	3411	3400
query66	1758	424	310	310
query67	20158	19917	20147	19917
query68	3290	1476	927	927
query69	391	301	264	264
query70	900	816	802	802
query71	295	237	220	220
query72	2668	2466	2090	2090
query73	857	749	430	430
query74	4652	4479	4282	4282
query75	2317	2308	1946	1946
query76	2303	1131	735	735
query77	357	396	305	305
query78	9072	9073	8432	8432
query79	1350	1211	735	735
query80	592	464	355	355
query81	548	326	281	281
query82	641	165	123	123
query83	304	217	202	202
query84	315	148	150	148
query85	849	465	377	377
query86	328	244	235	235
query87	1998	1945	1832	1832
query88	3609	2725	2742	2725
query89	347	283	241	241
query90	1931	185	175	175
query91	171	153	130	130
query92	102	81	87	81
query93	1480	1437	852	852
query94	538	333	271	271
query95	656	449	328	328
query96	1099	735	352	352
query97	2409	2436	2324	2324
query98	163	148	148	148
query99	715	726	612	612
Total cold run time: 235524 ms
Total hot run time: 151762 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.

Request changes: fresh synchronous and external tablet-ID propagation is internally consistent, but two P2 cache-lifecycle gaps remain.

Checkpoint conclusions:

  • Goal and scope: the patch correctly gives newly created synchronous Doris blocks their positive tablet ID and normalizes new external writes to 0. The remaining blockers are upgrade compatibility for persistent metadata namespaces and active-TTL reconciliation for late synchronous blocks.
  • Parallel paths and compatibility: sync, async, direct/partial, remote-only, warmup/dry-run, peer, startup/direct loading, persistence, eviction, and cleanup paths were traced. Fresh paths agree; existing external -1 and synchronous Doris 0 metadata is not migrated.
  • Concurrency and lifecycle: no new lock-order or ownership defect was found in fresh propagation. The migration path can mutate a live key without atomic rekeying, and TTL registration occurs before durable metadata publication without invalidating blocks_promoted.
  • Tests: the new tests deterministically cover fresh sync and external sync/async identity, but not legacy-key restart orderings, eviction/restart cleanup, or late active-TTL publication.
  • Configuration, API, data correctness, performance, and observability: there is no new configuration, FE/BE protocol, transaction, authoritative user-data, or independent memory/performance issue. Query correctness retains remote fallback; the findings concern persistent cache identity, TTL policy, repeated IO, and stale metadata.
  • Validation: static review only, as required by the review prompt; no builds or tests were run independently. Current GitHub compile/style checks were observed, while several test/regression contexts were still pending. No additional user focus was provided.

Three review rounds converged on these two deduplicated findings; all final production, contracts/tests, and risk reviewers returned NO_NEW_VALUABLE_FINDINGS. Existing resolved threads for fresh external normalization and restore-time registration were treated as hard duplicate fences. Reviewed exact head a9b77a5 against base d93137b.

_cache_align_mode(opts.align_mode),
_cache_write_mode(opts.cache_write_mode),
_tablet_id(opts.tablet_id),
_tablet_id(opts.is_doris_table ? opts.tablet_id : 0),

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.

[P2] Migrate legacy tablet-ID metadata keys

This normalization and the synchronous assignment below change two persistent BlockMetaKey namespaces: old async external blocks were written under -1 and now use 0, while old sync Doris blocks were written under 0 and now use the positive tablet ID. Direct loading performs only an exact (tablet_id, hash, offset) lookup, and background duplicate handling only mutates the in-memory ID; loader-first therefore retains the legacy identity, while reader-first can leave an alternate row that survives single-key eviction and is restored later for a missing file. Please reconcile this context-aware: migrate external -1 to 0, migrate legacy 0 to a positive ID only when a Doris reader supplies that identity, atomically update the live cell using the cache/block lock order, delete the old row, and cover both startup orderings through eviction and restart.

s_align_size(offset + already_read, bytes_req - already_read, size());
CacheContext cache_context(io_ctx);
cache_context.stats = &stats;
cache_context.tablet_id = _tablet_id;

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.

[P2] Reconcile blocks added after TTL promotion

This newly routes synchronous positive-ID blocks into the TTL manager, but register_tablet_id() only adds the ID to its deduplicated set and does not invalidate TtlInfo::blocks_promoted. SegmentIndexFileCacheLoader is a concrete caller: it forces a synchronous/dry-run INDEX read without an expiration, so after an earlier active-TTL promotion the new block is registered yet skipped by the want_ttl && blocks_promoted early return for the rest of that interval, including extensions. Registration also precedes append/finalize metadata publication, so the first scan can see no row and mark promotion complete before the block becomes durable. Please invalidate promotion at the durable publication boundary or otherwise make it level-triggered, and cover both late publication and the register-before-finalize ordering.

@hello-stephen

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

query1	0.01	0.01	0.01
query2	0.09	0.05	0.05
query3	0.26	0.14	0.14
query4	1.61	0.14	0.14
query5	0.25	0.22	0.23
query6	1.16	0.94	0.96
query7	0.04	0.00	0.01
query8	0.06	0.03	0.03
query9	0.39	0.34	0.34
query10	0.56	0.56	0.55
query11	0.20	0.14	0.15
query12	0.18	0.15	0.15
query13	0.46	0.46	0.47
query14	0.96	0.95	0.96
query15	0.59	0.58	0.58
query16	0.32	0.30	0.31
query17	1.12	1.05	1.07
query18	0.22	0.20	0.21
query19	2.07	1.92	1.91
query20	0.02	0.01	0.01
query21	15.49	0.18	0.13
query22	4.98	0.05	0.05
query23	16.15	0.30	0.13
query24	2.96	0.44	0.34
query25	0.11	0.05	0.04
query26	0.74	0.21	0.14
query27	0.03	0.04	0.05
query28	3.54	0.80	0.36
query29	12.50	4.02	3.25
query30	0.27	0.16	0.15
query31	2.79	0.56	0.31
query32	3.22	0.58	0.49
query33	3.13	3.14	3.20
query34	15.57	3.90	3.27
query35	3.23	3.19	3.23
query36	0.56	0.44	0.42
query37	0.09	0.06	0.06
query38	0.05	0.04	0.04
query39	0.04	0.03	0.03
query40	0.17	0.15	0.15
query41	0.08	0.03	0.02
query42	0.03	0.02	0.02
query43	0.05	0.04	0.03
Total cold run time: 96.35 s
Total hot run time: 23.97 s

@hello-stephen

Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 63.66% (29616/46520)
Line Coverage 48.36% (308389/637699)
Region Coverage 43.92% (248745/566348)
Branch Coverage 45.50% (115648/254156)

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 76.16% (34306/45046)
Line Coverage 61.05% (384888/630423)
Region Coverage 57.37% (323609/564070)
Branch Coverage 58.21% (147491/253369)

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants