Fix eviction when random_pos selects the end
Test / buildenv (push) Successful in 9s Details
Test / build (push) Successful in 2m44s Details
Test / test_cas (push) Successful in 10s Details
Test / make_test (push) Successful in 33s Details
Test / test_change_pg_size (push) Successful in 8s Details
Test / test_change_pg_count (push) Successful in 36s Details
Test / test_create_nomaxid (push) Successful in 7s Details
Test / test_etcd_fail (push) Successful in 42s Details
Test / test_interrupted_rebalance (push) Successful in 1m40s Details
Test / test_add_osd (push) Successful in 2m27s Details
Test / test_change_pg_count_ec (push) Failing after 3m6s Details
Test / test_interrupted_rebalance_imm (push) Successful in 1m56s Details
Test / test_failure_domain (push) Successful in 8s Details
Test / test_snapshot (push) Successful in 21s Details
Test / test_interrupted_rebalance_ec_imm (push) Successful in 1m18s Details
Test / test_minsize_1 (push) Successful in 13s Details
Test / test_move_reappear (push) Successful in 18s Details
Test / test_rm (push) Successful in 13s Details
Test / test_snapshot_chain (push) Successful in 1m1s Details
Test / test_snapshot_down (push) Successful in 20s Details
Test / test_snapshot_ec (push) Failing after 3m5s Details
Test / test_splitbrain (push) Successful in 12s Details
Test / test_snapshot_chain_ec (push) Failing after 3m6s Details
Test / test_snapshot_down_ec (push) Failing after 3m6s Details
Test / test_rebalance_verify_ec (push) Failing after 45s Details
Test / test_rebalance_verify (push) Successful in 2m34s Details
Test / test_rebalance_verify_imm (push) Successful in 2m5s Details
Test / test_write (push) Successful in 54s Details
Test / test_write_no_same (push) Successful in 12s Details
Test / test_rebalance_verify_ec_imm (push) Successful in 3m7s Details
Test / test_write_xor (push) Failing after 3m6s Details
Test / test_interrupted_rebalance_ec (push) Failing after 10m6s Details
Test / test_heal_pg_size_2 (push) Failing after 10m10s Details
Test / test_heal_ec (push) Failing after 10m7s Details
Test / test_heal_csum_32k_dmj (push) Failing after 10m10s Details
Test / test_heal_csum_32k_dj (push) Failing after 10m15s Details
Test / test_heal_csum_32k (push) Failing after 3m29s Details
Test / test_scrub (push) Successful in 1m9s Details
Test / test_scrub_zero_osd_2 (push) Successful in 1m18s Details
Test / test_heal_csum_4k_dmj (push) Failing after 5m56s Details
Test / test_scrub_pg_size_3 (push) Successful in 31s Details
Test / test_scrub_xor (push) Failing after 3m12s Details
Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Failing after 3m6s Details
Test / test_heal_csum_4k_dj (push) Failing after 10m10s Details
Test / test_scrub_ec (push) Failing after 3m6s Details
Test / test_heal_csum_4k (push) Failing after 10m21s Details

kv-debug
Vitaliy Filippov 2023-12-01 01:15:02 +03:00
parent 12b50b421d
commit f285cfc483
1 changed files with 9 additions and 8 deletions

View File

@ -830,9 +830,17 @@ static void try_evict(kv_db_t *db)
int misses = 0;
bool wrapped = false;
while (db->block_cache.size() > db->cache_max_blocks &&
(!wrapped || *random_it < random_pos) &&
(db->evict_max_misses <= 0 || misses < db->evict_max_misses))
{
if (random_it == db->block_levels.end() || (*random_it >> (64-LEVEL_BITS)) > evict_level)
{
if (wrapped)
break;
random_it = db->block_levels.lower_bound(evict_level << (64-LEVEL_BITS));
wrapped = true;
}
else if (wrapped && *random_it >= random_pos)
break;
auto b_it = db->block_cache.find((*random_it & NO_LEVEL_MASK) * db->kv_block_size);
auto blk = &b_it->second;
if (b_it != db->block_cache.end() && !blk->updating && blk->usage < db->usage_counter)
@ -845,13 +853,6 @@ static void try_evict(kv_db_t *db)
random_it++;
misses++;
}
if (random_it == db->block_levels.end() || (*random_it >> (64-LEVEL_BITS)) > evict_level)
{
if (wrapped)
break;
random_it = db->block_levels.lower_bound(evict_level << (64-LEVEL_BITS));
wrapped = true;
}
}
if (db->block_cache.size() <= db->cache_max_blocks)
{