On Sun, 17 Sep 2006, Graham Leggett wrote:
Niklas Edmundsson wrote:
However, I don't see how you can do a lockless design with multiple files
and an index that can do:
* Clients read from the cache as files are being cached.
* Only one session caches the same file.
* Header/Body updates.
* No index/files out-of-sync issues. Ever.
Thinking about this some more I do see a race during purging - a cache thread
could read the header, the purge deletes header and body, and then the cache
thread reads the body, and interprets the missing body as "the body is still
coming".
The easiest way to deal with this might be to have a timeout, if the
body hasn't shown up in $timeout time then something went bad,
DECLINE, meaning that the cache layer thinks it should cache the file
and acts accordingly. You actually want this fallback anyway, and it's
probably enough to deal with the purge-problem. The purge should
delete the oldest unused entries anyway, so the chance of hitting that
case shouldn't be too common.
And yes, since this scheme only might cause on-disk stray files that
can be cleaned up by purging I can agree that it'll work. However, I
strongly believe that the purging should not have to read each header
file the way that htcacheclean currently does it since it poses such a
strain on the cache filesystem. A file system traversal should be
enough.
Anyhow, I can probably rather easily adapt our patches to do it this
way if that's what people want. I'm not entirely sure what the gain
would be though, since it's a tad more housekeeping work and double
the number of inodes to traverse during a purge...
But, that is future work. I haven't had any comment of the current
patch of mine yet (lfs-config) so I'm not entirely sure of whether it
seems OK and I should proceed with the next patch or what. I'm not
that well endowed in all API:s involved, and stuff that looks right to
me might have a much better Apachier solution so I don't want to get
carried away creating huge patchsets to having the first one rejected
because my coding style sucks... However, I can understand if you want
a complete patch that solves the lfs issues, but then you'll have to
tell me since I'm not a mind reader ;)
/Nikke
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Niklas Edmundsson, Admin @ {acc,hpc2n}.umu.se | [EMAIL PROTECTED]
---------------------------------------------------------------------------
************ <--- tribbles playing follow-the-leader
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=