objectcache: avoid duplicate set() calls with lockTSE when no value is in cache

Each thread will still run the callback, but only one will save the value back

Bug: T203786
Change-Id: Idc4738aa005cc44ec0f1adc6dcf2e3f87d0c9480
This commit is contained in:
Aaron Schulz 2019-02-02 18:13:17 -08:00
parent 47838dfd6d
commit 70bf85d462

View file

@ -1334,7 +1334,8 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
$this->setInterimValue( $key, $wrapped, $tempTTL );
}
if ( $valueIsCacheable ) {
// Save the value unless a mutex-winning thread is already expected to do that
if ( $valueIsCacheable && ( !$useMutex || $lockAcquired ) ) {
$setOpts['lockTSE'] = $lockTSE;
$setOpts['staleTTL'] = $staleTTL;
// Use best known "since" timestamp if not provided