MINOR: cache: Remove expired entry delete in "show cache" command

The "show cache" CLI command iterates over all the entries of the cache
tree and it used this opportunity to remove expired entries from the
cache. This behavior was completely undocumented and does not seem that
necessary. By removing it we can take the cache lock in read mode only
which limits the impact on the other threads.
This commit is contained in:
Remi Tricot-Le Breton 2023-11-16 17:38:16 +01:00 committed by William Lallemand
parent ac9c49b40d
commit ff3cb6dad4

View File

@ -2671,7 +2671,7 @@ static int cli_io_handler_show_cache(struct appctx *appctx)
ctx->cache = cache;
cache_wrlock(cache);
cache_rdlock(cache);
while (1) {
node = eb32_lookup_ge(&cache->entries, next_key);
@ -2690,21 +2690,17 @@ static int cli_io_handler_show_cache(struct appctx *appctx)
chunk_appendf(&trash, " size:%u (%u blocks), refcount:%u, expire:%d\n",
block_ptr(entry)->len, block_ptr(entry)->block_count,
block_ptr(entry)->refcount, entry->expire - (int)date.tv_sec);
} else {
/* time to remove that one */
delete_entry(entry);
entry->eb.key = 0;
}
ctx->next_key = next_key;
if (applet_putchk(appctx, &trash) == -1) {
cache_wrunlock(cache);
cache_rdunlock(cache);
return 0;
}
}
cache_wrunlock(cache);
cache_rdunlock(cache);
}