Skip to content

[fix](mow) Account for pinned PK roots in segment cache eviction - #68304

Open
sollhui wants to merge 7 commits into
apache:masterfrom
sollhui:fix/doris-26781-lazy-pk-index-master
Open

sollhui wants to merge 7 commits into
apache:masterfrom
sollhui:fix/doris-26781-lazy-pk-index-master

Conversation

@sollhui

@sollhui sollhui commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

SegmentCache retained large PK index roots while its LRU charge only reflected
estimated metadata. With long keys, a metadata-sized cache entry can pin hundreds
of MiB of decompressed index pages and prevent the PK page cache from reclaiming
them.

The ownership chain is:

SegmentCache
  └─ Segment
       └─ PrimaryKeyIndexReader (_pk_index_reader)
            └─ IndexedColumnReader (_index_reader)
                 └─ PageHandle
                      └─ PK root page memory ← also cached by PKIndexPageCache

The reader's PageHandle and PKIndexPageCache refer to the same page allocation,
not separate copies. Keeping a Segment in SegmentCache can therefore keep its
loaded PK roots pinned even after the query finishes. Evicting the SegmentCache
entry removes cache ownership; once all remaining Segment references are released,
the reader releases its page handles and the PK page cache can reclaim those pages.

Charge loaded PK roots to SegmentCache eviction, both at insertion and when a
cached Segment initializes its PK index later. Physical memory remains tracked
by the PK page allocator; the additional eviction weight is not counted again
by MemTracker. Updates use the shard lock and check Segment identity so an old
instance cannot charge its replacement. The callback holds only a weak cache
reference. Failed index initialization discards partial readers and their page
handles.

The original eager rowset PK-index loading and index-before-bloom-filter lookup
order are preserved. This PR now isolates SegmentCache accounting; it does not
include the earlier segment lazy-loading or BF-first lookup optimizations.

This limits cache retention, not active-operation memory. Evicted Segments remain
valid through callers' shared pointers, and more frequent eviction can increase
index reloads.

Validation

  • Added 5 LRU tests and 6 Segment cache tests covering physical accounting,
    monotonic/concurrent charge updates, eviction, active handles, replacement,
    initialization before/after insertion, cache lifetime and partial-load failure.
  • Confirmed the restored rowset loading and lookup code matches baseline
    695c88b5772.
  • Changed-file clang-format 16 and build hygiene passed.
  • The unchanged low-level LRU implementation passed standalone compilation and
    ASan/UBSan scenarios using external logging/time/value-base stubs. This is
    supplementary validation, not a full BE unit-test run.
  • Full BE compilation/unit tests and clang-tidy remain pending CI: dependency
    downloads repeatedly timed out before compilation in the local environment.
    Test filter: CacheTest.UpdateCharge*:SegmentPrimaryKeyCacheTest.*.
  • Previous-build SegmentCache-only cleanup on two idle BEs reduced PK cache
    from 9.25/8.93 GiB to a few MiB.

Before/after memory validation

The before/after test runs show a change from sustained memory growth to
repeated memory reclamation:

  • Before: BE memory continued to grow, and the test eventually encountered
    OOM. In the captured dashboard window, the three BEs had mean memory usage of
    28.7–35.7 GiB, with the highest observed peak reaching 55.3 GiB.
  • After: The test ran stably without OOM. BE memory repeatedly dropped after
    transient spikes instead of maintaining the previous upward trend. In the
    captured dashboard window, the three BEs had mean memory usage of
    8.33–19.2 GiB, with the highest observed peak reaching 45.3 GiB.
BE memory metric in the captured window Before After
Range of per-BE mean memory usage 28.7–35.7 GiB 8.33–19.2 GiB
Highest observed peak across the three BEs 55.3 GiB 45.3 GiB
Test behavior Continued growth, eventually OOM Repeated memory drops, stable operation without OOM

The dashboard measurements above come from separate runs on different BE groups
and time windows.
These results validate the observed memory-retention improvement; transient
memory peaks remain, and no throughput comparison is claimed.

Release note

Account for pinned PK index roots in SegmentCache eviction to reduce persistent
index memory retention.

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

### What problem does this PR solve?

Related PR: apache#68304

SegmentCache retained large PK index roots while its LRU charge only reflected
estimated metadata. Charge eagerly loaded roots at insertion and refresh the
entry after lazy initialization, without charging the physical allocation twice.
Grow LRU weights under the shard lock and preserve live handles and replacement
identity. Discard partial readers on failed index initialization.

### Release note

Reduce persistent PK root retention by accounting for pinned roots in
SegmentCache eviction. Active readers can still retain pages beyond the cache
budget, and more frequent eviction can increase index reloads.

### Check List (For Author)

- Test: 11 new BE unit tests; execution blocked by dependency download timeouts.
  Actual low-level LRU source passed a standalone ASan/UBSan harness, including
  concurrent charge growth. Changed-file clang-format 16 and build hygiene pass.
  Full BE compilation and clang-tidy require CI (no compilation database locally).
- Behavior changed: Yes, SegmentCache eviction includes loaded PK root bytes.
- Does this need documentation: No.
@sollhui sollhui changed the title [fix](mow) Avoid PK index loading for unvisited segments and bloom misses [fix](mow) Reduce PK index loading and account for pinned roots in segment cache Sep 21, 2026
### What problem does this PR solve?

Related PR: apache#68304

Restore the original eager rowset PK-index loading and index-before-bloom-filter
lookup order so the pinned-root SegmentCache charge change can be measured alone.
Restore reader creation during index loading and replace BF-first tests with the
six cache-charge tests. A definite bloom miss now verifies index-first loading
and the corresponding cache charge increase.

### Release note

Only the SegmentCache pinned-root accounting fix remains in this PR.

### Check List (For Author)

- Test: Verified rowset loading and lookup implementation match baseline
  695c88b. clang-format 16 and build hygiene passed. Full BE build/tests
  remain pending CI due to the previously observed dependency download failures.
- Behavior changed: Yes, removes the earlier lazy-loading and BF-first changes.
- Does this need documentation: No.
@sollhui sollhui changed the title [fix](mow) Reduce PK index loading and account for pinned roots in segment cache [fix](mow) Account for pinned PK roots in segment cache eviction Sep 21, 2026
@sollhui

sollhui commented Sep 21, 2026

Copy link
Copy Markdown
Contributor Author

run buildall

@sollhui

sollhui commented Sep 21, 2026

Copy link
Copy Markdown
Contributor Author

/review

@github-actions

Copy link
Copy Markdown
Contributor

Codex automated review failed and did not complete.

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

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

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17685	3961	3900	3900
q2	2170	376	294	294
q3	10062	1463	802	802
q4	4683	478	350	350
q5	7477	837	557	557
q6	187	178	141	141
q7	780	802	597	597
q8	9345	1590	1566	1566
q9	5532	4227	4225	4225
q10	6825	1347	1009	1009
q11	436	274	248	248
q12	626	428	299	299
q13	18083	2630	2031	2031
q14	263	267	239	239
q15	q16	749	724	659	659
q17	1682	1139	1003	1003
q18	6515	5603	5538	5538
q19	1295	1197	1016	1016
q20	484	388	265	265
q21	5895	3515	3051	3051
q22	461	371	307	307
Total cold run time: 101235 ms
Total hot run time: 28097 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4646	4720	4472	4472
q2	727	591	568	568
q3	4921	5269	4667	4667
q4	2332	2385	1463	1463
q5	4581	4669	4492	4492
q6	228	175	128	128
q7	1825	1741	1592	1592
q8	2455	2203	2044	2044
q9	7354	7261	7242	7242
q10	3620	3552	3124	3124
q11	524	380	360	360
q12	706	697	505	505
q13	2285	2598	1980	1980
q14	279	284	257	257
q15	q16	667	683	596	596
q17	7363	6821	6696	6696
q18	11968	11098	11726	11098
q19	1086	1041	1027	1027
q20	2193	2215	1938	1938
q21	5111	4225	4412	4225
q22	527	460	424	424
Total cold run time: 65398 ms
Total hot run time: 58898 ms

@hello-stephen

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

query5	4306	597	446	446
query6	418	210	197	197
query7	4855	552	296	296
query8	313	179	167	167
query9	8813	4036	4002	4002
query10	461	314	266	266
query11	5919	3528	3224	3224
query12	157	96	93	93
query13	1282	623	403	403
query14	6525	4550	4255	4255
query14_1	3937	3994	3936	3936
query15	208	196	183	183
query16	989	444	442	442
query17	905	661	545	545
query18	2459	462	334	334
query19	199	180	140	140
query20	84	81	83	81
query21	220	136	115	115
query22	13054	13015	12768	12768
query23	14009	12996	12460	12460
query23_1	12726	12559	12498	12498
query24	7340	1143	658	658
query24_1	657	669	710	669
query25	573	440	374	374
query26	1263	297	161	161
query27	2723	547	331	331
query28	4545	1951	1962	1951
query29	1611	725	522	522
query30	298	227	181	181
query31	897	765	627	627
query32	154	93	100	93
query33	530	323	271	271
query34	1184	1136	623	623
query35	725	761	654	654
query36	802	784	705	705
query37	148	111	95	95
query38	1825	1759	1687	1687
query39	697	689	674	674
query39_1	661	667	648	648
query40	222	126	101	101
query41	71	69	68	68
query42	100	95	92	92
query43	338	343	291	291
query44	1369	701	720	701
query45	192	183	175	175
query46	1063	1179	755	755
query47	1534	1504	1406	1406
query48	383	415	291	291
query49	573	394	287	287
query50	966	344	259	259
query51	10684	10545	10605	10545
query52	89	86	78	78
query53	242	247	179	179
query54	246	203	188	188
query55	78	73	71	71
query56	223	227	216	216
query57	1433	1414	1356	1356
query58	282	255	247	247
query59	1991	2071	1861	1861
query60	271	243	224	224
query61	146	144	146	144
query62	399	331	276	276
query63	205	174	173	173
query64	2784	992	823	823
query65	3464	3389	3400	3389
query66	1818	422	310	310
query67	20352	20103	19857	19857
query68	3543	1526	962	962
query69	415	298	264	264
query70	904	788	861	788
query71	305	224	219	219
query72	2722	2527	2221	2221
query73	822	811	413	413
query74	4618	4485	4304	4304
query75	2303	2262	1942	1942
query76	2395	1111	752	752
query77	353	391	307	307
query78	9144	9212	8553	8553
query79	1358	1205	749	749
query80	593	462	365	365
query81	539	330	276	276
query82	646	162	124	124
query83	279	214	192	192
query84	321	148	116	116
query85	876	463	382	382
query86	339	256	222	222
query87	2016	1987	1839	1839
query88	3609	2744	2718	2718
query89	378	284	246	246
query90	1877	179	175	175
query91	168	156	127	127
query92	99	80	87	80
query93	1508	1467	875	875
query94	540	355	309	309
query95	675	386	335	335
query96	1053	766	337	337
query97	2422	2420	2327	2327
query98	158	160	141	141
query99	725	722	615	615
Total cold run time: 237223 ms
Total hot run time: 152651 ms

@hello-stephen

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

query1	0.01	0.01	0.00
query2	0.10	0.05	0.05
query3	0.26	0.14	0.14
query4	1.61	0.14	0.14
query5	0.25	0.22	0.22
query6	1.16	0.94	0.91
query7	0.04	0.01	0.01
query8	0.06	0.04	0.04
query9	0.40	0.34	0.34
query10	0.57	0.58	0.59
query11	0.19	0.14	0.13
query12	0.18	0.15	0.16
query13	0.46	0.47	0.48
query14	0.93	0.93	0.95
query15	0.61	0.58	0.57
query16	0.32	0.33	0.32
query17	1.14	1.03	1.12
query18	0.23	0.22	0.21
query19	2.08	1.95	1.97
query20	0.02	0.01	0.01
query21	15.40	0.21	0.15
query22	4.91	0.05	0.05
query23	16.16	0.32	0.12
query24	2.96	0.41	0.33
query25	0.11	0.05	0.05
query26	0.74	0.20	0.16
query27	0.04	0.04	0.04
query28	3.56	0.78	0.35
query29	12.48	4.13	3.22
query30	0.27	0.15	0.15
query31	2.77	0.55	0.31
query32	3.23	0.59	0.50
query33	3.19	3.20	3.21
query34	15.55	3.96	3.29
query35	3.27	3.21	3.24
query36	0.55	0.44	0.42
query37	0.08	0.07	0.06
query38	0.05	0.04	0.03
query39	0.03	0.03	0.04
query40	0.17	0.15	0.14
query41	0.08	0.04	0.03
query42	0.04	0.03	0.03
query43	0.04	0.04	0.03
Total cold run time: 96.3 s
Total hot run time: 24.1 s

### What problem does this PR solve?

Related PR: apache#68304

A segment whose PK roots grow beyond its cache shard capacity evicts every
other idle entry before being evicted itself. Remove cache ownership of the
oversized entry immediately, preserving live handles and unrelated entries.
Keep normal eviction when the growing entry can still fit in the shard.

Update the Segment cache tests to the existing VerticalSegmentWriterOptions
interface and matching build_segment helper signature.

### Release note

Avoid unnecessary segment cache eviction when loaded PK roots exceed shard
capacity.

### Check List (For Author)

- Test: Added/updated BE unit tests for oversized entries, normal eviction,
  timestamp eviction, outstanding handles, and physical memory accounting.
  Extracted five low-level test bodies and the original LRU implementation
  into an external-dependency-stub harness: ASan/UBSan passed after the fix;
  the baseline failed the oversized-entry regression assertion.
  Changed-file clang-format 16, build hygiene and git diff --check passed.
  Full BE UT was attempted with CacheTest.UpdateCharge*:SegmentPrimaryKeyCacheTest.*;
  configuration failed before compilation because protoc, Boost and Snappy
  dependencies are missing. Full BE UT and clang-tidy remain pending.
- Behavior changed: Yes; oversized growing entries are removed without
  evicting unrelated entries, while live handles retain ownership.
- Does this need documentation: No
### What problem does this PR solve?

Related PR: apache#68304

The eviction helpers use count >= limit to reserve a slot for insertion.
Reusing them unconditionally for charge growth evicts an unrelated entry
when the element limit is reached even if byte capacity is sufficient.
Only invoke eviction from update_charge when usage exceeds capacity.

### Release note

Avoid unnecessary segment cache eviction when updating entry size at the
cache element-count limit.

### Check List (For Author)

- Test: Added a BE regression test covering below, exactly at and above byte
  capacity while at the element-count limit, with both normal and timestamp
  eviction. Extracted production LRU code and six test bodies passed an
  ASan/UBSan harness with external dependency stubs; the new test fails on
  the preceding commit. Changed-file clang-format 16, build hygiene and
  git diff --check passed. Full BE UT and clang-tidy remain unavailable due
  to the previously confirmed missing protoc, Boost and Snappy dependencies.
- Behavior changed: Yes; charge growth only initiates eviction when usage
  exceeds capacity, without reserving an additional element slot.
- Does this need documentation: No
@sollhui

sollhui commented Sep 21, 2026

Copy link
Copy Markdown
Contributor Author

run buildall

@sollhui

sollhui commented Sep 21, 2026

Copy link
Copy Markdown
Contributor Author

/review

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17696	3885	3866	3866
q2	2541	371	308	308
q3	10223	1470	809	809
q4	4684	477	355	355
q5	7655	822	548	548
q6	182	182	143	143
q7	749	797	601	601
q8	9309	1495	1520	1495
q9	6954	4191	4156	4156
q10	7797	1331	1006	1006
q11	439	286	245	245
q12	644	412	299	299
q13	18067	2623	1971	1971
q14	261	254	229	229
q15	q16	736	717	675	675
q17	1788	1153	1056	1056
q18	6532	5593	5555	5555
q19	1179	1199	1053	1053
q20	487	385	262	262
q21	5507	3042	2784	2784
q22	434	354	308	308
Total cold run time: 103864 ms
Total hot run time: 27724 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4529	4378	4566	4378
q2	783	607	570	570
q3	4767	5097	4562	4562
q4	2243	2329	1434	1434
q5	4692	4678	4266	4266
q6	226	171	128	128
q7	1715	1661	1426	1426
q8	2234	2002	1899	1899
q9	7232	7212	7420	7212
q10	3707	3624	3192	3192
q11	570	410	395	395
q12	721	718	517	517
q13	2475	2720	2175	2175
q14	294	297	259	259
q15	q16	713	706	651	651
q17	7733	7370	6773	6773
q18	11951	11030	11699	11030
q19	1125	1020	1020	1020
q20	2232	2204	1904	1904
q21	5052	4315	4401	4315
q22	506	460	396	396
Total cold run time: 65500 ms
Total hot run time: 58502 ms

@hello-stephen

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

query5	4307	608	466	466
query6	426	206	193	193
query7	4847	584	289	289
query8	342	182	165	165
query9	8833	4007	4004	4004
query10	453	313	260	260
query11	5833	3570	3243	3243
query12	150	90	86	86
query13	1250	585	432	432
query14	6515	4558	4231	4231
query14_1	4012	4077	4025	4025
query15	208	198	175	175
query16	981	466	437	437
query17	931	690	545	545
query18	2436	457	344	344
query19	209	184	142	142
query20	85	81	79	79
query21	221	136	115	115
query22	13094	13106	12790	12790
query23	14040	12834	12409	12409
query23_1	12325	12362	12472	12362
query24	7189	1151	619	619
query24_1	642	691	743	691
query25	559	441	370	370
query26	833	306	167	167
query27	2664	579	332	332
query28	4490	1989	1961	1961
query29	1459	763	541	541
query30	301	220	185	185
query31	887	771	637	637
query32	155	101	99	99
query33	530	309	256	256
query34	1211	1091	620	620
query35	745	765	649	649
query36	807	797	711	711
query37	151	112	95	95
query38	1826	1771	1705	1705
query39	720	703	664	664
query39_1	656	653	676	653
query40	217	132	103	103
query41	74	70	67	67
query42	97	94	92	92
query43	360	369	330	330
query44	1468	724	710	710
query45	187	175	165	165
query46	1057	1189	719	719
query47	1508	1506	1400	1400
query48	395	410	302	302
query49	583	422	328	328
query50	935	339	265	265
query51	10459	10595	10541	10541
query52	87	88	74	74
query53	247	255	181	181
query54	259	209	190	190
query55	76	73	72	72
query56	225	227	216	216
query57	1551	1487	1339	1339
query58	281	265	246	246
query59	2018	2066	1893	1893
query60	271	231	220	220
query61	145	145	141	141
query62	407	318	264	264
query63	212	177	179	177
query64	2253	1011	857	857
query65	3489	3411	3467	3411
query66	1752	418	317	317
query67	19860	20042	19800	19800
query68	3133	1519	852	852
query69	428	297	261	261
query70	904	831	831	831
query71	301	234	206	206
query72	2646	2531	2223	2223
query73	825	739	416	416
query74	4676	4496	4304	4304
query75	2310	2306	1930	1930
query76	2338	1136	773	773
query77	369	396	301	301
query78	9042	8971	8433	8433
query79	1374	1285	714	714
query80	581	460	366	366
query81	537	322	283	283
query82	615	168	126	126
query83	314	218	194	194
query84	308	142	115	115
query85	848	467	375	375
query86	349	235	232	232
query87	2005	1998	1859	1859
query88	3658	2735	2711	2711
query89	363	289	258	258
query90	1957	192	186	186
query91	168	159	124	124
query92	100	81	92	81
query93	1448	1508	842	842
query94	544	339	301	301
query95	666	383	423	383
query96	1028	785	355	355
query97	2429	2405	2347	2347
query98	169	146	141	141
query99	734	736	602	602
Total cold run time: 234768 ms
Total hot run time: 152719 ms

@hello-stephen

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

query1	0.01	0.01	0.00
query2	0.09	0.05	0.05
query3	0.26	0.15	0.14
query4	1.61	0.14	0.15
query5	0.26	0.23	0.23
query6	1.16	0.97	0.93
query7	0.04	0.01	0.00
query8	0.06	0.04	0.04
query9	0.40	0.35	0.34
query10	0.59	0.60	0.58
query11	0.21	0.15	0.14
query12	0.18	0.14	0.14
query13	0.47	0.47	0.48
query14	0.94	0.94	0.94
query15	0.62	0.61	0.59
query16	0.31	0.32	0.32
query17	1.08	1.13	1.09
query18	0.22	0.19	0.20
query19	2.02	1.95	1.86
query20	0.02	0.01	0.01
query21	15.52	0.19	0.14
query22	4.97	0.06	0.05
query23	16.13	0.31	0.12
query24	2.99	0.43	0.33
query25	0.10	0.05	0.04
query26	0.72	0.21	0.15
query27	0.04	0.05	0.04
query28	3.56	0.74	0.38
query29	12.48	4.02	3.25
query30	0.28	0.16	0.15
query31	2.77	0.56	0.30
query32	3.22	0.60	0.50
query33	3.16	3.17	3.26
query34	15.52	3.94	3.29
query35	3.24	3.23	3.25
query36	0.59	0.44	0.42
query37	0.09	0.07	0.06
query38	0.05	0.04	0.03
query39	0.04	0.03	0.03
query40	0.17	0.15	0.14
query41	0.09	0.03	0.02
query42	0.03	0.02	0.02
query43	0.04	0.03	0.04
Total cold run time: 96.35 s
Total hot run time: 24.09 s

@github-actions

Copy link
Copy Markdown
Contributor

Codex automated review failed and did not complete.

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

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

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 87.50% (7/8) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 76.28% (34363/45049)
Line Coverage 61.20% (385876/630554)
Region Coverage 57.64% (325240/564213)
Branch Coverage 58.45% (148137/253439)

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.

2 participants