diff options
author | Matthew Gumport <[email protected]> | 2024-08-27 00:31:53 -0700 |
---|---|---|
committer | Edward Wang <[email protected]> | 2024-09-06 13:43:53 -0700 |
commit | 5e3e774a8d7681f52e9d02bf74e32a0f6031a4c7 (patch) | |
tree | 1ff19c557b8ee5f4cf074ec09c7810e261f0de81 /pingora-proxy | |
parent | 4446912080ce84063e2da458a0c507b466db3825 (diff) | |
download | pingora-5e3e774a8d7681f52e9d02bf74e32a0f6031a4c7.tar.gz pingora-5e3e774a8d7681f52e9d02bf74e32a0f6031a4c7.zip |
disable caching during error handling
This has the effect of reducing a warning log since we are not
leaving the lock dangling for the next reader.
Diffstat (limited to 'pingora-proxy')
-rw-r--r-- | pingora-proxy/src/lib.rs | 2 | ||||
-rw-r--r-- | pingora-proxy/tests/test_upstream.rs | 3 |
2 files changed, 2 insertions, 3 deletions
diff --git a/pingora-proxy/src/lib.rs b/pingora-proxy/src/lib.rs index f872d82..890af98 100644 --- a/pingora-proxy/src/lib.rs +++ b/pingora-proxy/src/lib.rs @@ -607,6 +607,8 @@ impl<SV> HttpProxy<SV> { }; if let Some(e) = final_error.as_ref() { + // If we have errored and are still holding a cache lock, release it. + session.cache.disable(NoCacheReason::InternalError); let status = self.inner.fail_to_proxy(&mut session, e, &mut ctx).await; // final error will have > 0 status unless downstream connection is dead diff --git a/pingora-proxy/tests/test_upstream.rs b/pingora-proxy/tests/test_upstream.rs index c2499f5..02174c1 100644 --- a/pingora-proxy/tests/test_upstream.rs +++ b/pingora-proxy/tests/test_upstream.rs @@ -1077,9 +1077,6 @@ mod test_cache { init(); let url = "http://127.0.0.1:6148/sleep/test_cache_lock_network_error.txt"; - // FIXME: Dangling lock happens in this test because the first request aborted without - // properly release the lock. This is a bug - let task1 = tokio::spawn(async move { let res = reqwest::Client::new() .get(url) |