diff --git a/includes/MediaWikiServices.php b/includes/MediaWikiServices.php index 529105a6669..354bf37bc24 100644 --- a/includes/MediaWikiServices.php +++ b/includes/MediaWikiServices.php @@ -211,6 +211,7 @@ use Wikimedia\Parsoid\Config\SiteConfig; use Wikimedia\Rdbms\ChronologyProtector; use Wikimedia\Rdbms\ConfiguredReadOnlyMode; use Wikimedia\Rdbms\DatabaseFactory; +use Wikimedia\Rdbms\IConnectionProvider; use Wikimedia\Rdbms\ILoadBalancer; use Wikimedia\Rdbms\LBFactory; use Wikimedia\Rdbms\LBFactorySingle; @@ -941,6 +942,13 @@ class MediaWikiServices extends ServiceContainer { return $this->getService( 'ConfiguredReadOnlyMode' ); } + /** + * @since 1.42 + */ + public function getConnectionProvider(): IConnectionProvider { + return $this->getService( 'ConnectionProvider' ); + } + /** * @since 1.35 */ @@ -1042,6 +1050,7 @@ class MediaWikiServices extends ServiceContainer { /** * @since 1.28 + * @note When possible, use {@link getConnectionProvider()} instead. */ public function getDBLoadBalancerFactory(): LBFactory { return $this->getService( 'DBLoadBalancerFactory' ); diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index cc83aac6095..203904b63ea 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -240,6 +240,7 @@ use Wikimedia\Parsoid\Parsoid; use Wikimedia\Rdbms\ChronologyProtector; use Wikimedia\Rdbms\ConfiguredReadOnlyMode; use Wikimedia\Rdbms\DatabaseFactory; +use Wikimedia\Rdbms\IConnectionProvider; use Wikimedia\Rdbms\ReadOnlyMode; use Wikimedia\RequestTimeout\CriticalSectionProvider; use Wikimedia\RequestTimeout\RequestTimeout; @@ -288,7 +289,7 @@ return [ 'ArchivedRevisionLookup' => static function ( MediaWikiServices $services ): ArchivedRevisionLookup { return new ArchivedRevisionLookup( - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getRevisionStore() ); }, @@ -334,7 +335,7 @@ return [ $services->getLinksMigration(), $services->getMainWANObjectCache(), $services->getHookContainer(), - $services->getDBLoadBalancerFactory() + $services->getConnectionProvider() ); }, @@ -462,7 +463,7 @@ return [ 'ChangeTagsStore' => static function ( MediaWikiServices $services ): ChangeTagsStore { return new ChangeTagsStore( - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getChangeTagDefStore(), $services->getMainWANObjectCache(), $services->getHookContainer(), @@ -582,6 +583,10 @@ return [ ); }, + 'ConnectionProvider' => static function ( MediaWikiServices $services ): IConnectionProvider { + return $services->getDBLoadBalancerFactory(); + }, + 'ContentHandlerFactory' => static function ( MediaWikiServices $services ): IContentHandlerFactory { $contentHandlerConfig = $services->getMainConfig()->get( MainConfigNames::ContentHandlers ); @@ -620,7 +625,7 @@ return [ $services->getLinkRendererFactory(), $services->getLinkBatchFactory(), $services->getHookContainer(), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getNamespaceInfo(), $services->getCommentFormatter() ); @@ -969,7 +974,7 @@ return [ $services->getContentLanguage(), $services->getMainWANObjectCache(), $services->getHookContainer(), - $services->getDBLoadBalancerFactory() + $services->getConnectionProvider() ); }, @@ -1075,7 +1080,7 @@ return [ $services->getTitleFormatter(), $services->getContentLanguage(), $services->getGenderCache(), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getLinksMigration(), LoggerFactory::getInstance( 'LinkBatch' ) ); @@ -1118,7 +1123,7 @@ return [ 'LinkTargetLookup' => static function ( MediaWikiServices $services ): LinkTargetLookup { return new LinkTargetStore( - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getLocalServerObjectCache(), $services->getMainWANObjectCache() ); @@ -1378,7 +1383,7 @@ return [ return new ImportableOldRevisionImporter( true, LoggerFactory::getInstance( 'OldRevisionImporter' ), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getRevisionStore(), $services->getSlotRoleRegistry(), $services->getWikiPageFactory(), @@ -1390,7 +1395,7 @@ return [ 'PageEditStash' => static function ( MediaWikiServices $services ): PageEditStash { return new PageEditStash( ObjectCache::getLocalClusterInstance(), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), LoggerFactory::getInstance( 'StashEdit' ), $services->getStatsdDataFactory(), $services->getUserEditTracker(), @@ -1406,7 +1411,7 @@ return [ 'PageProps' => static function ( MediaWikiServices $services ): PageProps { return new PageProps( $services->getLinkBatchFactory(), - $services->getDBLoadBalancerFactory() + $services->getConnectionProvider() ); }, @@ -1452,7 +1457,7 @@ return [ ): PageUpdaterFactory { $editResultCache = new EditResultCache( $services->getMainObjectStash(), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), new ServiceOptions( EditResultCache::CONSTRUCTOR_OPTIONS, $services->getMainConfig() @@ -1671,7 +1676,7 @@ return [ LoggerFactory::getInstance( 'authentication' ), $services->getAuthManager(), $services->getHookContainer(), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getUserFactory(), $services->getUserNameUtils(), $services->getUserOptionsLookup() @@ -1712,7 +1717,7 @@ return [ 'Pingback' => static function ( MediaWikiServices $services ): Pingback { return new Pingback( $services->getMainConfig(), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), ObjectCache::getLocalClusterInstance(), $services->getHttpRequestFactory(), LoggerFactory::getInstance( 'Pingback' ) @@ -1896,7 +1901,7 @@ return [ 'RevertedTagUpdateManager' => static function ( MediaWikiServices $services ): RevertedTagUpdateManager { $editResultCache = new EditResultCache( $services->getMainObjectStash(), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), new ServiceOptions( EditResultCache::CONSTRUCTOR_OPTIONS, $services->getMainConfig() @@ -1978,7 +1983,7 @@ return [ return new SearchEngineFactory( $services->getSearchEngineConfig(), $services->getHookContainer(), - $services->getDBLoadBalancerFactory() + $services->getConnectionProvider() ); }, @@ -2046,7 +2051,7 @@ return [ }, 'SiteStore' => static function ( MediaWikiServices $services ): SiteStore { - $rawSiteStore = new DBSiteStore( $services->getDBLoadBalancerFactory() ); + $rawSiteStore = new DBSiteStore( $services->getConnectionProvider() ); $cache = $services->getLocalServerObjectCache(); if ( $cache instanceof EmptyBagOStuff ) { @@ -2182,7 +2187,7 @@ return [ new ServiceOptions( TalkPageNotificationManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getReadOnlyMode(), $services->getRevisionLookup(), $services->getHookContainer(), @@ -2305,7 +2310,7 @@ return [ 'UserCache' => static function ( MediaWikiServices $services ): UserCache { return new UserCache( LoggerFactory::getInstance( 'UserCache' ), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getLinkBatchFactory() ); }, @@ -2313,7 +2318,7 @@ return [ 'UserEditTracker' => static function ( MediaWikiServices $services ): UserEditTracker { return new UserEditTracker( $services->getActorMigration(), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getJobQueueGroup() ); }, @@ -2366,7 +2371,7 @@ return [ 'UserNamePrefixSearch' => static function ( MediaWikiServices $services ): UserNamePrefixSearch { return new UserNamePrefixSearch( - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getUserNameUtils(), $services->getHideUserUtils() ); @@ -2398,7 +2403,7 @@ return [ new ServiceOptions( UserOptionsManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ), $services->get( '_DefaultOptionsLookup' ), $services->getLanguageConverterFactory(), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), LoggerFactory::getInstance( 'UserOptionsManager' ), $services->getHookContainer(), $services->getUserFactory(), @@ -2419,7 +2424,7 @@ return [ 'WatchedItemQueryService' => static function ( MediaWikiServices $services ): WatchedItemQueryService { return new WatchedItemQueryService( - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getCommentStore(), $services->getWatchedItemStore(), $services->getHookContainer(), @@ -2505,7 +2510,7 @@ return [ return new ImportableOldRevisionImporter( false, LoggerFactory::getInstance( 'OldRevisionImporter' ), - $services->getDBLoadBalancerFactory(), + $services->getConnectionProvider(), $services->getRevisionStore(), $services->getSlotRoleRegistry(), $services->getWikiPageFactory(),