}
try {
- wfGetLBFactory()->waitForReplication( [
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $lbFactory->waitForReplication( [
'wiki' => $wiki,
'cluster' => $cluster,
'timeout' => $timeout,
* @file
*/
+use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\LoadBalancer;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\DBConnRef;
* @return LoadBalancer
*/
private function getLoadBalancer( $cluster ) {
- return wfGetLBFactory()->getExternalLB( $cluster );
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ return $lbFactory->getExternalLB( $cluster );
}
/**
* http://www.gnu.org/copyleft/gpl.html
*/
+use MediaWiki\MediaWikiServices;
use MediaWiki\Session\BotPasswordSessionProvider;
use Wikimedia\Rdbms\IMaintainableDatabase;
public static function getDB( $db ) {
global $wgBotPasswordsCluster, $wgBotPasswordsDatabase;
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
$lb = $wgBotPasswordsCluster
- ? wfGetLBFactory()->getExternalLB( $wgBotPasswordsCluster )
- : wfGetLB( $wgBotPasswordsDatabase );
+ ? $lbFactory->getExternalLB( $wgBotPasswordsCluster )
+ : $lbFactory->getMainLB( $wgBotPasswordsDatabase );
return $lb->getConnectionRef( $db, [], $wgBotPasswordsDatabase );
}
require_once __DIR__ . '/Maintenance.php';
+use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\LoadBalancer;
use Wikimedia\Rdbms\IDatabase;
return $this->forcedDb;
}
- $this->lb = wfGetLBFactory()->newMainLB();
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $this->lb = $lbFactory->newMainLB();
$db = $this->lb->getConnection( DB_REPLICA, 'dump' );
// Discourage the server from disconnecting us if it takes a long time
require_once __DIR__ . '/7zip.inc';
require_once __DIR__ . '/../includes/export/WikiExporter.php';
+use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\IMaintainableDatabase;
/**
// individually retrying at different layers of code.
try {
- $this->lb = wfGetLBFactory()->newMainLB();
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $this->lb = $lbFactory->newMainLB();
} catch ( Exception $e ) {
throw new MWException( __METHOD__
. " rotating DB failed to obtain new load balancer (" . $e->getMessage() . ")" );
*/
require_once __DIR__ . '/Maintenance.php';
+
use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\ILBFactory;
/**
* Maintenance script that rebuilds recent changes from scratch.
$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();
}
/**
* 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();
);
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" );
__METHOD__
);
if ( ( ++$inserted % $this->getBatchSize() ) == 0 ) {
- wfGetLBFactory()->waitForReplication();
+ $lbFactory->waitForReplication();
}
}
}
* 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" );
$lastSize = $size;
if ( ( ++$updated % $this->getBatchSize() ) == 0 ) {
- wfGetLBFactory()->waitForReplication();
+ $lbFactory->waitForReplication();
}
}
}
/**
* 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 );
);
if ( ( ++$inserted % $this->getBatchSize() ) == 0 ) {
- wfGetLBFactory()->waitForReplication();
+ $lbFactory->waitForReplication();
}
}
}
/**
* Rebuild pass 4: Mark bot and autopatrolled entries.
*/
- private function rebuildRecentChangesTablePass4() {
+ private function rebuildRecentChangesTablePass4( ILBFactory $lbFactory ) {
global $wgUseRCPatrol, $wgMiserMode;
$dbw = $this->getDB( DB_MASTER );
[ 'rc_id' => $rcidBatch ],
__METHOD__
);
- wfGetLBFactory()->waitForReplication();
+ $lbFactory->waitForReplication();
}
}
}
],
__METHOD__
);
- wfGetLBFactory()->waitForReplication();
+ $lbFactory->waitForReplication();
}
}
}
* 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" );
);
if ( ( ++$updates % $this->getBatchSize() ) == 0 ) {
- wfGetLBFactory()->waitForReplication();
+ $lbFactory->waitForReplication();
}
}
}
require_once __DIR__ . '/Maintenance.php';
+use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\ResultWrapper;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\DBQueryError;
// We wan't to allow "" for the wikidb, meaning don't call select_db()
$wiki = $this->hasOption( 'wikidb' ) ? $this->getOption( 'wikidb' ) : false;
// Get the appropriate load balancer (for this wiki)
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
if ( $this->hasOption( 'cluster' ) ) {
- $lb = wfGetLBFactory()->getExternalLB( $this->getOption( 'cluster' ) );
+ $lb = $lbFactory->getExternalLB( $this->getOption( 'cluster' ) );
} else {
- $lb = wfGetLB( $wiki );
+ $lb = $lbFactory->getMainLB( $wiki );
}
// Figure out which server to use
$replicaDB = $this->getOption( 'replicadb', $this->getOption( 'slave', '' ) );
require_once __DIR__ . '/../Maintenance.php';
+use MediaWiki\MediaWikiServices;
+
/**
* Maintenance script that shows some statistics on the blob_orphans table,
* created with trackBlobs.php.
}
protected function &getDB( $cluster, $groups = [], $wiki = false ) {
- $lb = wfGetLBFactory()->getExternalLB( $cluster );
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $lb = $lbFactory->getExternalLB( $cluster );
return $lb->getConnection( DB_REPLICA );
}
* @return Database
*/
function getExtDB( $cluster ) {
- $lb = wfGetLBFactory()->getExternalLB( $cluster );
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $lb = $lbFactory->getExternalLB( $cluster );
return $lb->getConnection( DB_MASTER );
}
* @see wfWaitForSlaves()
*/
+use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\DBConnectionError;
require __DIR__ . '/../commandLine.inc';
foreach ( $this->clusters as $cluster ) {
echo "Searching for orphan blobs in $cluster...\n";
- $lb = wfGetLBFactory()->getExternalLB( $cluster );
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $lb = $lbFactory->getExternalLB( $cluster );
try {
$extDB = $lb->getConnection( DB_REPLICA );
} catch ( DBConnectionError $e ) {
require __DIR__ . '/../../maintenance/Maintenance.php';
+use MediaWiki\MediaWikiServices;
+
class ParserTestsMaintenance extends Maintenance {
function __construct() {
parent::__construct();
$recorderLB = false;
if ( $record || $compare ) {
- $recorderLB = wfGetLBFactory()->newMainLB();
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $recorderLB = $lbFactory->newMainLB();
// This connection will have the wiki's table prefix, not parsertest_
$recorderDB = $recorderLB->getConnection( DB_MASTER );
];
// clear anything
- wfGetLBFactory()->commitMasterChanges( __METHOD__ );
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $lbFactory->commitMasterChanges( __METHOD__ );
DeferredUpdates::addCallableUpdate(
function () use ( $updates ) {
$x = false;
$y = false;
// clear anything
- wfGetLBFactory()->commitMasterChanges( __METHOD__ );
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $lbFactory->commitMasterChanges( __METHOD__ );
DeferredUpdates::addCallableUpdate(
function () use ( &$x, &$y ) {