From 1d216c7ec1815c510bd3c6a1152cf41f748f93e0 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 21 Apr 2022 11:30:43 +0200 Subject: [PATCH] BUG/MINOR: cache: Disable cache if applet creation fails When we want to serve a resource from the cache, if the applet creation fails, the "cache-use" action must not yield. Otherwise, the stream will hang. Instead, we now disable the cache. Thus the request may be served by the server. This patch must be backported as far as 1.8. --- src/cache.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cache.c b/src/cache.c index 94f4e7c10..9375faf9c 100644 --- a/src/cache.c +++ b/src/cache.c @@ -1830,10 +1830,11 @@ enum act_return http_action_req_cache_use(struct act_rule *rule, struct proxy *p _HA_ATOMIC_INC(&px->be_counters.p.http.cache_hits); return ACT_RET_CONT; } else { + s->target = NULL; shctx_lock(shctx_ptr(cache)); shctx_row_dec_hot(shctx_ptr(cache), entry_block); shctx_unlock(shctx_ptr(cache)); - return ACT_RET_YIELD; + return ACT_RET_CONT; } } shctx_unlock(shctx_ptr(cache));