From: Aaron Schulz Date: Thu, 10 Nov 2016 21:32:48 +0000 (-0800) Subject: Make insertRedirectEntry() use upsert() to reduce contention X-Git-Tag: 1.31.0-rc.0~4822^2 X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=bee07f1578675a1ba8fd3248f406495b1b6b5016;p=lhc%2Fweb%2Fwiklou.git Make insertRedirectEntry() use upsert() to reduce contention Bug: T150453 Change-Id: I89705b954d5ddaf337e57fcfd02691edaa32ec83 --- diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index ae92839cfe..56a22c55dd 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -938,8 +938,8 @@ class WikiPage implements Page, IDBAccessObject { $dbw->startAtomic( __METHOD__ ); if ( !$oldLatest || $oldLatest == $this->lockAndGetLatest() ) { - $dbw->replace( 'redirect', - [ 'rd_from' ], + $dbw->upsert( + 'redirect', [ 'rd_from' => $this->getId(), 'rd_namespace' => $rt->getNamespace(), @@ -947,6 +947,13 @@ class WikiPage implements Page, IDBAccessObject { 'rd_fragment' => $rt->getFragment(), 'rd_interwiki' => $rt->getInterwiki(), ], + [ 'rd_from' ], + [ + 'rd_namespace' => $rt->getNamespace(), + 'rd_title' => $rt->getDBkey(), + 'rd_fragment' => $rt->getFragment(), + 'rd_interwiki' => $rt->getInterwiki(), + ], __METHOD__ ); }