X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2Frebuildrecentchanges.php;h=dc8bf290b0dde18f0b4318ed41318d6cb130d88c;hb=32fc919220e83872ada63e5e4954d9b7402a66ce;hp=6c7dbff95362c68efe4927045baee1b8719de408;hpb=3bfcc2a9fe52f045206f465363ac1ba6a843ba69;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/rebuildrecentchanges.php b/maintenance/rebuildrecentchanges.php index 6c7dbff953..dc8bf290b0 100644 --- a/maintenance/rebuildrecentchanges.php +++ b/maintenance/rebuildrecentchanges.php @@ -24,7 +24,9 @@ */ require_once __DIR__ . '/Maintenance.php'; + use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ILBFactory; /** * Maintenance script that rebuilds recent changes from scratch. @@ -64,11 +66,12 @@ class RebuildRecentchanges extends Maintenance { $this->fatalError( "Both 'from' and 'to' must be given, or neither" ); } - $this->rebuildRecentChangesTablePass1(); - $this->rebuildRecentChangesTablePass2(); - $this->rebuildRecentChangesTablePass3(); - $this->rebuildRecentChangesTablePass4(); - $this->rebuildRecentChangesTablePass5(); + $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); + $this->rebuildRecentChangesTablePass1( $lbFactory ); + $this->rebuildRecentChangesTablePass2( $lbFactory ); + $this->rebuildRecentChangesTablePass3( $lbFactory ); + $this->rebuildRecentChangesTablePass4( $lbFactory ); + $this->rebuildRecentChangesTablePass5( $lbFactory ); if ( !( $this->hasOption( 'from' ) && $this->hasOption( 'to' ) ) ) { $this->purgeFeeds(); } @@ -78,7 +81,7 @@ class RebuildRecentchanges extends Maintenance { /** * Rebuild pass 1: Insert `recentchanges` entries for page revisions. */ - private function rebuildRecentChangesTablePass1() { + private function rebuildRecentChangesTablePass1( ILBFactory $lbFactory ) { $dbw = $this->getDB( DB_MASTER ); $commentStore = CommentStore::getStore(); @@ -110,7 +113,7 @@ class RebuildRecentchanges extends Maintenance { ); foreach ( array_chunk( $rcids, $this->getBatchSize() ) as $rcidBatch ) { $dbw->delete( 'recentchanges', [ 'rc_id' => $rcidBatch ], __METHOD__ ); - wfGetLBFactory()->waitForReplication(); + $lbFactory->waitForReplication(); } $this->output( "Loading from page and revision tables...\n" ); @@ -166,7 +169,7 @@ class RebuildRecentchanges extends Maintenance { __METHOD__ ); if ( ( ++$inserted % $this->getBatchSize() ) == 0 ) { - wfGetLBFactory()->waitForReplication(); + $lbFactory->waitForReplication(); } } } @@ -175,7 +178,7 @@ class RebuildRecentchanges extends Maintenance { * Rebuild pass 2: Enhance entries for page revisions with references to the previous revision * (rc_last_oldid, rc_new etc.) and size differences (rc_old_len, rc_new_len). */ - private function rebuildRecentChangesTablePass2() { + private function rebuildRecentChangesTablePass2( ILBFactory $lbFactory ) { $dbw = $this->getDB( DB_MASTER ); $this->output( "Updating links and size differences...\n" ); @@ -256,7 +259,7 @@ class RebuildRecentchanges extends Maintenance { $lastSize = $size; if ( ( ++$updated % $this->getBatchSize() ) == 0 ) { - wfGetLBFactory()->waitForReplication(); + $lbFactory->waitForReplication(); } } } @@ -265,7 +268,7 @@ class RebuildRecentchanges extends Maintenance { /** * Rebuild pass 3: Insert `recentchanges` entries for action logs. */ - private function rebuildRecentChangesTablePass3() { + private function rebuildRecentChangesTablePass3( ILBFactory $lbFactory ) { global $wgLogTypes, $wgLogRestrictions; $dbw = $this->getDB( DB_MASTER ); @@ -338,7 +341,7 @@ class RebuildRecentchanges extends Maintenance { ); if ( ( ++$inserted % $this->getBatchSize() ) == 0 ) { - wfGetLBFactory()->waitForReplication(); + $lbFactory->waitForReplication(); } } } @@ -346,7 +349,7 @@ class RebuildRecentchanges extends Maintenance { /** * Rebuild pass 4: Mark bot and autopatrolled entries. */ - private function rebuildRecentChangesTablePass4() { + private function rebuildRecentChangesTablePass4( ILBFactory $lbFactory ) { global $wgUseRCPatrol, $wgMiserMode; $dbw = $this->getDB( DB_MASTER ); @@ -370,7 +373,7 @@ class RebuildRecentchanges extends Maintenance { [ 'ug_group' => $botgroups ], __METHOD__, [ 'DISTINCT' ], - [ 'user_group' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins'] + [ 'user_groups' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins'] ); $botusers = []; @@ -405,7 +408,7 @@ class RebuildRecentchanges extends Maintenance { [ 'rc_id' => $rcidBatch ], __METHOD__ ); - wfGetLBFactory()->waitForReplication(); + $lbFactory->waitForReplication(); } } } @@ -423,7 +426,7 @@ class RebuildRecentchanges extends Maintenance { [ 'ug_group' => $autopatrolgroups ], __METHOD__, [ 'DISTINCT' ], - [ 'user_group' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins'] + [ 'user_groups' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins'] ); foreach ( $res as $obj ) { @@ -444,7 +447,7 @@ class RebuildRecentchanges extends Maintenance { ], __METHOD__ ); - wfGetLBFactory()->waitForReplication(); + $lbFactory->waitForReplication(); } } } @@ -454,7 +457,7 @@ class RebuildRecentchanges extends Maintenance { * Rebuild pass 5: Delete duplicate entries where we generate both a page revision and a log entry * for a single action (upload only, at the moment, but potentially also move, protect, ...). */ - private function rebuildRecentChangesTablePass5() { + private function rebuildRecentChangesTablePass5( ILBFactory $lbFactory ) { $dbw = wfGetDB( DB_MASTER ); $this->output( "Removing duplicate revision and logging entries...\n" ); @@ -493,7 +496,7 @@ class RebuildRecentchanges extends Maintenance { ); if ( ( ++$updates % $this->getBatchSize() ) == 0 ) { - wfGetLBFactory()->waitForReplication(); + $lbFactory->waitForReplication(); } } }