[squid-dev] [RFC] reduce MISS on transients collision

Alex Rousskov rousskov at measurement-factory.com
Sun Jul 17 18:59:42 UTC 2016


On 07/17/2016 05:01 AM, Amos Jeffries wrote:
> I've just been looking at the Store::Controller::find() implementation
> and it struck me that if the transients lookup has an error the object
> will fail to HIT on any existing cache entries.

If the transients table tells us that the transient object is in a "bad"
state, then trying to load that same object from a store will fail at
best or result in a stale/truncated/stuck response at worse.


> Alex; am I missing something undocumented here ?

You might be missing something documented: The Transients definition or
purpose. Transients is not one of the many "if not here than possibly
there" cache stores. Transients is dedicated to cache entries in
transient state. If a given entry can be correctly loaded from a regular
cache store, then, by definition, that entry is not transient [any more]
and would not be in Transients. Consequently, if the entry is in
Transients, then it is impossible to load it correctly from a regular store.

It is possible that a lock contention or a similar SMP race condition
inside Transients would result in a cache miss instead of reading from a
Transients-controlled entry, but, bugs notwithstanding, that should not
happen often.


HTH,

Alex.



More information about the squid-dev mailing list