objectcache: optimize merge()/incr() for WinCacheBagOStuff
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 20 Mar 2019 05:50:41 +0000 (22:50 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 20 Mar 2019 20:02:18 +0000 (20:02 +0000)
commit8c92400909c74dff595d24a092f5965155530a48
treef198be86bc6dc49352e02b172e5d3e1f4fed5b7e
parentd5e63e5ad8b0d033c90649c552a0b726d82132ee
objectcache: optimize merge()/incr() for WinCacheBagOStuff

Do not hold WinCache locks during merge() callbacks, as that
could be seconds of being blocked (and some callers do not
expect indefinite blocking). Make merge() use the CAS method
which only uses wincache_lock() after callback runs in very
tight getWithToken()/set() cycle.

Make incr() use wincache_lock() since it also is very tight
doGet()/set() cycle with negligable work in between.

Change-Id: I0dde6f62c7e3d4a802470c181570ad4353d0e6ea
includes/libs/objectcache/WinCacheBagOStuff.php