[fix](regression) Sync version 3 before DROP in test_clean_tablet_when_drop_force_table (#69846)

Related PR: #68449

Problem Summary:

`test_clean_tablet_when_drop_force_table` fails intermittently with
`File cache directories were not cleaned before timeout`. The leftover
cache dirs all belong to the version 3 rowsets.

#68449 set `disable_auto_compaction=true` for this case. Before that
change, cloud compaction called `sync_rowsets()` and loaded version 3
into the BE tablets as a side effect. Now nothing loads version 3
between the second stream load and `DROP TABLE FORCE`, because the case
only queries after the version 2 load. The cloud `drop_tablet_callback`
only recycles the file cache of rowsets in `get_snapshot_rowset(true)`,
so the version 3 cache stays and the cleanup assertion times out.

This PR queries the table after the version 3 load, the same way the
case already does after version 2. The query loads version 3 on every BE
before DROP. It also asserts the row count (160000) to confirm version 3
is visible.
This commit is contained in:
Xin Liao authored and Your Name committed 2026-10-31 07:50:29 +00:00
1 parent 67eef18c2d
commit 8d2b6e8e20
1 file changed
+10
@@ -282,6 +282,16 @@ suite('test_clean_tablet_when_drop_force_table', 'docker') {
}
}
// Auto compaction is disabled, so nothing else syncs version 3 into the BE tablets.
// DROP only recycles the file cache of rowsets already loaded on the BE, so query
// here to load version 3 before collecting its cache dirs.
for (int i = 0; i < 5; i++) {
def rows = sql """
select count(*) from $tableName
"""
assertEquals(160000L, rows[0][0] as long)
}
// before drop table force
def beforeGetFromFe = getTabletAndBeHostFromFe(tableName)
def beforeGetFromBe = getTabletAndBeHostFromBe(cluster.getAllBackends())