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