From e9c7e1d34e4785c171f70bb4702a1312307b9773 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Sun, 14 May 2017 16:56:04 -0700 Subject: [PATCH] Avoid DB_MASTER queries in User::newSystemUser() when possible Bug: T92357 Change-Id: I1c90fef9b4f3acc658f4911a8db6f985e7cc7c83 --- includes/user/User.php | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) 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 -- 2.20.1