Have User::createNew() load the object from master
authorBrad Jorsch <bjorsch@wikimedia.org>
Fri, 23 Feb 2018 18:24:47 +0000 (13:24 -0500)
committerAaron Schulz <aschulz@wikimedia.org>
Fri, 23 Feb 2018 23:44:19 +0000 (15:44 -0800)
When the new User is created, it's leaving it to be lazy-loaded from a
replica. That seems to be causing attempts to add groups immediately
after creation to fail because the load-from-replica doesn't find the
just-created master row.

Bug: T188014
Change-Id: I841c434086bfaaca1cf1ce23673f32dc5a77915d

includes/user/User.php

index 869adca..c614111 100644 (file)
@@ -4350,6 +4350,8 @@ class User implements IDBAccessObject, UserIdentity {
                        $dbw->insert( 'user', $fields, $fname, [ 'IGNORE' ] );
                        if ( $dbw->affectedRows() ) {
                                $newUser = self::newFromId( $dbw->insertId() );
+                               // Load the user from master to avoid replica lag
+                               $newUser->load( self::READ_LATEST );
                                $newUser->mName = $fields['user_name'];
                                $newUser->setItemLoaded( 'name' );
                                $newUser->updateActorId( $dbw );