Re: [ANNOUNCE] CGit v0.1-pre
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Dec 11, 2006, 17:01 UTC
- Message-ID
- <Pine.LNX.4.64.0612110859200.12500@woody.osdl.org>
- In-Reply-To
- <8c5c35580612110033y4f6260c9xffeaf4457f4ead21@mail.gmail.com>
On Mon, 11 Dec 2006, Lars Hjemli wrote:
> > But this also applies to the case where the cachefile has expired, > right? In that case, after getting the lock, I have to recheck that > the cachefile is _still_ expired.
Yes.
> Anyway, I must say I find it rather unlikely for these cases to occur > (frequently) in real life. That would seem to imply that the caching > isn't really needed at all.
The point is, if you have races, you will hit them _occasionally_. It may not be a performance problem in real life, BUT:
- quite often, you can take advantage of the serialization guarantees that a front-side cache offers you, and do the uncached accesses (or writing the final cache-file) knowing that there's only one thing that does that.
- If so, then a race condition in the cache goes from a "unlikely performance problem" to a BUG.
Show 5 quoted lines
> > As a side note: how do you release your caches? > > Simple timeouts (time()-stat.st_mtime), depending on what kind of page > was requested. If anyone cares about invalid cache content (branch > head moving), relevant cachefiles can be deleted with an update-hook.
I was more thinking about the locking part. Again, to be safe, you should probably take the lock before releasing any cache.