diff --git a/includes/api/ApiBase.php b/includes/api/ApiBase.php index 9af46befb11..9b232c4cde1 100644 --- a/includes/api/ApiBase.php +++ b/includes/api/ApiBase.php @@ -39,7 +39,6 @@ use Wikimedia\ParamValidator\ParamValidator; use Wikimedia\ParamValidator\TypeDef\EnumDef; use Wikimedia\ParamValidator\TypeDef\IntegerDef; use Wikimedia\ParamValidator\TypeDef\StringDef; -use Wikimedia\Rdbms\IDatabase; use Wikimedia\Timestamp\TimestampException; /** @@ -655,11 +654,13 @@ abstract class ApiBase extends ContextSource { /** * Gets a default replica DB connection object * @stable to override - * @return IDatabase + * @return \Wikimedia\Rdbms\IReadableDatabase */ protected function getDB() { if ( !isset( $this->mReplicaDB ) ) { - $this->mReplicaDB = wfGetDB( DB_REPLICA, 'api' ); + $this->mReplicaDB = MediaWikiServices::getInstance() + ->getDBLoadBalancerFactory() + ->getReplicaDatabase( false, 'api' ); } return $this->mReplicaDB; diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php index c721eeb495f..73f2d78641f 100644 --- a/includes/api/ApiMain.php +++ b/includes/api/ApiMain.php @@ -248,7 +248,7 @@ class ApiMain extends ApiBase { 'setnotificationtimestamp' => [ 'class' => ApiSetNotificationTimestamp::class, 'services' => [ - 'DBLoadBalancer', + 'DBLoadBalancerFactory', 'RevisionStore', 'WatchedItemStore', ] @@ -403,7 +403,7 @@ class ApiMain extends ApiBase { 'tag' => [ 'class' => ApiTag::class, 'services' => [ - 'DBLoadBalancer', + 'DBLoadBalancerFactory', 'RevisionStore', ] ], @@ -416,7 +416,7 @@ class ApiMain extends ApiBase { 'setpagelanguage' => [ 'class' => ApiSetPageLanguage::class, 'services' => [ - 'DBLoadBalancer', + 'DBLoadBalancerFactory', 'LanguageNameUtils', ] ], diff --git a/includes/api/ApiPageSet.php b/includes/api/ApiPageSet.php index 019173e9511..89892a03807 100644 --- a/includes/api/ApiPageSet.php +++ b/includes/api/ApiPageSet.php @@ -1642,7 +1642,7 @@ class ApiPageSet extends ApiBase { /** * Get the database connection (read-only) - * @return IDatabase + * @return \Wikimedia\Rdbms\IReadableDatabase */ protected function getDB() { return $this->mDbSource->getDB(); diff --git a/includes/api/ApiSetNotificationTimestamp.php b/includes/api/ApiSetNotificationTimestamp.php index 444affe7fbe..9f4b2d29b78 100644 --- a/includes/api/ApiSetNotificationTimestamp.php +++ b/includes/api/ApiSetNotificationTimestamp.php @@ -26,7 +26,7 @@ use MediaWiki\Revision\RevisionStore; use MediaWiki\Title\Title; use Wikimedia\ParamValidator\ParamValidator; -use Wikimedia\Rdbms\ILoadBalancer; +use Wikimedia\Rdbms\IConnectionProvider; /** * API interface for setting the wl_notificationtimestamp field @@ -39,8 +39,8 @@ class ApiSetNotificationTimestamp extends ApiBase { /** @var RevisionStore */ private $revisionStore; - /** @var ILoadBalancer */ - private $loadBalancer; + /** @var IConnectionProvider */ + private $dbProvider; /** @var WatchedItemStoreInterface */ private $watchedItemStore; @@ -48,20 +48,20 @@ class ApiSetNotificationTimestamp extends ApiBase { /** * @param ApiMain $main * @param string $action - * @param ILoadBalancer $loadBalancer + * @param IConnectionProvider $dbProvider * @param RevisionStore $revisionStore * @param WatchedItemStoreInterface $watchedItemStore */ public function __construct( ApiMain $main, $action, - ILoadBalancer $loadBalancer, + IConnectionProvider $dbProvider, RevisionStore $revisionStore, WatchedItemStoreInterface $watchedItemStore ) { parent::__construct( $main, $action ); - $this->loadBalancer = $loadBalancer; + $this->dbProvider = $dbProvider; $this->revisionStore = $revisionStore; $this->watchedItemStore = $watchedItemStore; } @@ -92,7 +92,7 @@ class ApiSetNotificationTimestamp extends ApiBase { ); } - $dbw = $this->loadBalancer->getConnectionRef( DB_PRIMARY ); + $dbw = $this->dbProvider->getPrimaryDatabase(); $timestamp = null; if ( isset( $params['timestamp'] ) ) { diff --git a/includes/api/ApiSetPageLanguage.php b/includes/api/ApiSetPageLanguage.php index bcac2f1ca59..da224e9b04b 100644 --- a/includes/api/ApiSetPageLanguage.php +++ b/includes/api/ApiSetPageLanguage.php @@ -23,7 +23,7 @@ use MediaWiki\Languages\LanguageNameUtils; use MediaWiki\MainConfigNames; use Wikimedia\ParamValidator\ParamValidator; -use Wikimedia\Rdbms\ILoadBalancer; +use Wikimedia\Rdbms\IConnectionProvider; /** * API module that facilitates changing the language of a page. @@ -34,8 +34,8 @@ use Wikimedia\Rdbms\ILoadBalancer; */ class ApiSetPageLanguage extends ApiBase { - /** @var ILoadBalancer */ - private $loadBalancer; + /** @var IConnectionProvider */ + private $dbProvider; /** @var LanguageNameUtils */ private $languageNameUtils; @@ -43,17 +43,17 @@ class ApiSetPageLanguage extends ApiBase { /** * @param ApiMain $mainModule * @param string $moduleName - * @param ILoadBalancer $loadBalancer + * @param IConnectionProvider $dbProvider * @param LanguageNameUtils $languageNameUtils */ public function __construct( ApiMain $mainModule, $moduleName, - ILoadBalancer $loadBalancer, + IConnectionProvider $dbProvider, LanguageNameUtils $languageNameUtils ) { parent::__construct( $mainModule, $moduleName ); - $this->loadBalancer = $loadBalancer; + $this->dbProvider = $dbProvider; $this->languageNameUtils = $languageNameUtils; } @@ -110,7 +110,7 @@ class ApiSetPageLanguage extends ApiBase { $params['lang'], $params['reason'] ?? '', $params['tags'] ?: [], - $this->loadBalancer->getConnectionRef( ILoadBalancer::DB_PRIMARY ) + $this->dbProvider->getPrimaryDatabase() ); if ( !$status->isOK() ) { diff --git a/includes/api/ApiTag.php b/includes/api/ApiTag.php index 0aee01a0086..7fbb777757c 100644 --- a/includes/api/ApiTag.php +++ b/includes/api/ApiTag.php @@ -21,8 +21,8 @@ use MediaWiki\Revision\RevisionStore; use Wikimedia\ParamValidator\ParamValidator; +use Wikimedia\Rdbms\IConnectionProvider; use Wikimedia\Rdbms\IDatabase; -use Wikimedia\Rdbms\ILoadBalancer; /** * @ingroup API @@ -41,17 +41,17 @@ class ApiTag extends ApiBase { /** * @param ApiMain $main * @param string $action - * @param ILoadBalancer $loadBalancer + * @param IConnectionProvider $dbProvider * @param RevisionStore $revisionStore */ public function __construct( ApiMain $main, $action, - ILoadBalancer $loadBalancer, + IConnectionProvider $dbProvider, RevisionStore $revisionStore ) { parent::__construct( $main, $action ); - $this->dbr = $loadBalancer->getConnectionRef( DB_REPLICA ); + $this->dbr = $dbProvider->getReplicaDatabase(); $this->revisionStore = $revisionStore; } diff --git a/includes/export/Hook/ModifyExportQueryHook.php b/includes/export/Hook/ModifyExportQueryHook.php index 57182186321..a558b23174f 100644 --- a/includes/export/Hook/ModifyExportQueryHook.php +++ b/includes/export/Hook/ModifyExportQueryHook.php @@ -2,7 +2,7 @@ namespace MediaWiki\Hook; -use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\IReadableDatabase; /** * This is a hook handler interface, see docs/Hooks.md. @@ -17,15 +17,15 @@ interface ModifyExportQueryHook { * * @since 1.35 * - * @param IDatabase $db Database object to be queried + * @param IReadableDatabase $db Database object to be queried * @param array &$tables Tables in the query * @param string $cond An SQL fragment included in the WHERE clause which is used to filter * the results, for example to a specific page. Since 1.31, modification of this * parameter has no effect. Since 1.35, you can use $conds instead to modify the - * array of conditions passed to IDatabase::select(). + * array of conditions passed to IReadableDatabase::select(). * @param array &$opts Options for the query * @param array &$join_conds Join conditions for the query - * @param array &$conds The array of conditions to be passed to IDatabase::select(). Can be + * @param array &$conds The array of conditions to be passed to IReadableDatabase::select(). Can be * modified. Includes the value of $cond. * @return bool|void True or no return value to continue or false to abort */ diff --git a/includes/export/WikiExporter.php b/includes/export/WikiExporter.php index 0a45b7c2690..1d969370346 100644 --- a/includes/export/WikiExporter.php +++ b/includes/export/WikiExporter.php @@ -36,7 +36,7 @@ use MediaWiki\Page\PageIdentity; use MediaWiki\Revision\RevisionAccessException; use MediaWiki\Revision\RevisionRecord; use MediaWiki\Revision\RevisionStore; -use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\IReadableDatabase; use Wikimedia\Rdbms\IResultWrapper; /** @@ -75,7 +75,7 @@ class WikiExporter { /** @var XmlDumpWriter */ private $writer; - /** @var IDatabase */ + /** @var IReadableDatabase */ protected $db; /** @var array|int */ @@ -106,7 +106,7 @@ class WikiExporter { } /** - * @param IDatabase $db + * @param IReadableDatabase $db * @param CommentStore $commentStore * @param HookContainer $hookContainer * @param RevisionStore $revisionStore diff --git a/includes/export/WikiExporterFactory.php b/includes/export/WikiExporterFactory.php index 8182c67b479..9f85846285c 100644 --- a/includes/export/WikiExporterFactory.php +++ b/includes/export/WikiExporterFactory.php @@ -25,7 +25,7 @@ use MediaWiki\HookContainer\HookContainer; use MediaWiki\Revision\RevisionStore; use TitleParser; use WikiExporter; -use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\IReadableDatabase; /** * Factory service for WikiExporter instances. @@ -65,7 +65,7 @@ class WikiExporterFactory { } /** - * @param IDatabase $db + * @param IReadableDatabase $db * @param int|array $history * @param int $text * @param null|array $limitNamespaces @@ -73,7 +73,7 @@ class WikiExporterFactory { * @return WikiExporter */ public function getWikiExporter( - IDatabase $db, + IReadableDatabase $db, $history = WikiExporter::CURRENT, $text = WikiExporter::TEXT, $limitNamespaces = null diff --git a/includes/logging/LogEventsList.php b/includes/logging/LogEventsList.php index 1780c8a2c89..b7baa687d90 100644 --- a/includes/logging/LogEventsList.php +++ b/includes/logging/LogEventsList.php @@ -31,7 +31,6 @@ use MediaWiki\MainConfigNames; use MediaWiki\MediaWikiServices; use MediaWiki\Page\PageReference; use MediaWiki\Permissions\Authority; -use Wikimedia\Rdbms\IDatabase; class LogEventsList extends ContextSource { public const NO_ACTION_LINK = 1; @@ -807,7 +806,7 @@ class LogEventsList extends ContextSource { /** * SQL clause to skip forbidden log types for this user * - * @param IDatabase $db + * @param \Wikimedia\Rdbms\IReadableDatabase $db * @param string $audience Public/user * @param Authority|null $performer User to check, required when audience isn't public * @return string|false String on success, false on failure.