This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.1 by this push:
new 2f7a52da905 [fix](case) test_delete_bitmap_metrics: warm agg cache on
every replica (#64515)
2f7a52da905 is described below
commit 2f7a52da905bb397a3513b72116dc399d4babbdc
Author: shuke <[email protected]>
AuthorDate: Tue Jun 16 13:22:52 2026 +0800
[fix](case) test_delete_bitmap_metrics: warm agg cache on every replica
(#64515)
## Problem
`test_delete_bitmap_metrics` is flaky on the branch-4.1 P0 regression.
It reads the per-replica aggregated delete-bitmap cache
(`/api/delete_bitmap/count_agg_cache`) and asserts `delete_bitmap_count
== 8` on **every** replica of the tablet. But that agg cache is
populated **lazily, only on the replica that actually served a query**.
On a multi-replica cluster (`force_olap_table_replication_num`), the
`qt_sql` select before the loop warms only one replica, so the other
replicas still report `0` → the assertion fails. Which replica serves
the query is non-deterministic → flaky.
## Fix
Before the per-replica assertions, warm every replica by pinning the
read to each replica ordinal (`use_fix_replica`) and running a select,
so each replica's agg cache is populated. The assertions themselves are
unchanged.
## Verification
Reproduced and verified directly on a branch-4.1 cluster (force-3
replicas) via `count_agg_cache`:
- before any select: all replicas report agg=0
- after one default select: only the serving replica reports 8 (others
0)
- after warming all replicas: all report 8
The suite passes with the fix.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
---
.../suites/metrics_p0/test_delete_bitmap_metrics.groovy | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git
a/regression-test/suites/metrics_p0/test_delete_bitmap_metrics.groovy
b/regression-test/suites/metrics_p0/test_delete_bitmap_metrics.groovy
index 80f7da957ef..580f3e66f5c 100644
--- a/regression-test/suites/metrics_p0/test_delete_bitmap_metrics.groovy
+++ b/regression-test/suites/metrics_p0/test_delete_bitmap_metrics.groovy
@@ -189,6 +189,18 @@ suite("test_delete_bitmap_metrics", "p0") {
def ms_delete_bitmap_count = 0
def local_delete_bitmap_cardinality = 0;
def ms_delete_bitmap_cardinality = 0;
+ // The aggregated delete-bitmap cache is populated lazily, and only on
the
+ // replica that actually served a query. On a multi-replica cluster
+ // (force_olap_table_replication_num) the qt_sql above warms only one
replica,
+ // so the per-replica agg-cache assertions below fail on the other
replicas.
+ // Warm every replica by pinning the read to each replica ordinal in
turn.
+ int warm_replica_num = tablets.size()
+ for (int ri = 0; ri < warm_replica_num; ri++) {
+ sql "set use_fix_replica=${ri};"
+ sql "select * from ${testTable};"
+ }
+ sql "set use_fix_replica=-1;"
+ sql "sync"
for (def tablet in tablets) {
String tablet_id = tablet.TabletId
def tablet_info = sql_return_maparray """ show tablet
${tablet_id}; """
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]