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
