mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-21 13:16:57 +00:00
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:
parent
ac9c49b40d
commit
ff3cb6dad4
10
src/cache.c
10
src/cache.c
@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user