Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix ENTRY_ABORTED assertion in sendClientOldEntry() (squid-cache#1903)
FATAL: assertion failed: client_side_reply.cc:392: "!EBIT_TEST(http->storeEntry()->flags, ENTRY_ABORTED)" The replaced assertion was wrong because a stale entry may be aborted while we are revalidating it. The exact real-world conditions that triggered this assertion are unknown, but many conditions lead to aborted entries. The assertion can be triggered in lab tests using a hit transaction that collapses on a miss transaction that runs into storage problems (e.g., a memory cache that ran out of usable space). Also adjusted cacheHit() to avoid similar problems. We have not reproduced them, but no code maintains the asserted invariant on the cacheHit() path either. Moreover, async-called cacheHit() initiates processExpired() that leads to problematic sendClientOldEntry() call, so seeing an aborted StoreEntry at cacheHit() time is probably a matter of sufficient concurrency levels and asynchronous callback delays.
- Loading branch information