From: Aaron Schulz Date: Sun, 14 May 2017 23:56:04 +0000 (-0700) Subject: Avoid DB_MASTER queries in User::newSystemUser() when possible X-Git-Tag: 1.31.0-rc.0~3058^2 X-Git-Url: http://git.cyclocoop.org/%40spipnet%40?a=commitdiff_plain;h=e9c7e1d34e4785c171f70bb4702a1312307b9773;p=lhc%2Fweb%2Fwiklou.git Avoid DB_MASTER queries in User::newSystemUser() when possible Bug: T92357 Change-Id: I1c90fef9b4f3acc658f4911a8db6f985e7cc7c83 --- diff --git a/includes/user/User.php b/includes/user/User.php index 5dd4be1b4d..ce6bbc300d 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -693,19 +693,31 @@ class User implements IDBAccessObject { return null; } - $fields = self::selectFields(); - - $dbw = wfGetDB( DB_MASTER ); - $row = $dbw->selectRow( + $dbr = wfGetDB( DB_REPLICA ); + $row = $dbr->selectRow( 'user', - $fields, + self::selectFields(), [ 'user_name' => $name ], __METHOD__ ); + if ( !$row ) { + // Try the master database... + $dbw = wfGetDB( DB_MASTER ); + $row = $dbw->selectRow( + 'user', + self::selectFields(), + [ 'user_name' => $name ], + __METHOD__ + ); + } + if ( !$row ) { // No user. Create it? - return $options['create'] ? self::createNew( $name, [ 'token' => self::INVALID_TOKEN ] ) : null; + return $options['create'] + ? self::createNew( $name, [ 'token' => self::INVALID_TOKEN ] ) + : null; } + $user = self::newFromRow( $row ); // A user is considered to exist as a non-system user if it can