davisp opened a new pull request #610: Optimize ddoc cache
URL: https://github.com/apache/couchdb/pull/610
 
 
   ## Overview
   
   The previous version of ddoc_cache was written to rely on evicting
   entries after a maximum TTL. This leads to issues on clusters that have
   a large amount of load on databases with a large Q. What ends up
   happening is that when a design document is evicted we suddenly have a
   thundering herd scenario as every client attempts to reinsert it into
   the cache.
   
   This change instead relies on a monitor process for each cache entry
   that periodically attempts to refresh the cache. This way normal clients
   accessing a popular design document will never hit a point where it
   doesn't exist in cache. And we'll have at most one reader trying to
   write the value.
   
   ## Testing recommendations
   
   make eunit apps=ddoc_cache
   
   You'll find its got 100% test coverage if you enable cover.
   
   One note on the tests that's a bit different than other suites. I stumbled 
across a fun pattern of adding a function call to various locations in the code 
so that I can meck:wait on it. This is a compile time switch so its only 
affects the eunit runs. Production code has the calls compiled out and replaced 
by an atom which does nothing.
   
   ## Checklist
   
   - [x] Code is written and works correctly;
   - [x] Changes are covered by tests;
   
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to