On Mon, 14 Aug 2006, Francis Cianfrocca wrote:

> On 8/13/06, Jon Smirl <jonsmirl / gmail.com> wrote:
>> You are rebuilding many of the features of git.
>> http://git.or.cz/index.html
>
>
> Write-once/read-many is the optimization profile for archival storage,
> but not for a persistent session cache. You're proving yet again that

A persistent session cache was actually my original motivation when I 
started working on the code.

IOWA's default way of managing sessions is via a cache.  For a busy 
server, this obviously imposes some memory constraints on just how many 
sessions or for just how long one can keep sessions around.

So I created a bilevel cache that uses an in-memory LRU cache for the L1 
cache, and when an element is expired from the L1 cache, it is inserted 
into the L2 cache.  If the L2 cache is a persistent store, then that 
session can be retrieved again when required.

By making that persistent store itself an LRU cache, I can still let it 
self manage its ultimate size or the ultimate age of elements within it, I 
maintain reasonably fast access to elements that have gone out to the 
persistent store, I can potentially do things like have the server flush 
it's L1 cache to L2 and shut down.  When it's started again all of the 
sessions which were available when it was shut down are still available. 
Etc....


Kirk Haines