Hello All,

I've just finished a massive refactoring of the NH cache classes. The
biggest change is the introduction of a
copy-on-write cache concurrency strategy, where each session, after
locking an entity, performs a copy on write into
a local per session cache, and copies the write back into the main
cache after an entity has been unlocked
(assuming that the main cache item for this key is puttable).

This provides true repeatable read and read committed isolation for
different sessions, and allows one session to access a cache key
after another session locks it, as opposed to forcing the first
session to hit the database. (Note: the copy
on write cache only works for versioned entites).

The strategy uses a reader/writer lock for synchronizing access to the
cache (ReaderWriterLockSlim), so performance should be
good. (I've also converted the ReadWriteCache strategy to use a
reader/writer lock)

I've updated my Redis-based cache provider to support the new copy on
write cache strategy, and because of how
Redis is designed, it is possible to remove all locks. So compared to
other distributed caches, performance should
be excellent.

What is the best way of submitting these changes for review?

Thanks,
Jorge

Reply via email to