X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2FServiceWiring.php;h=6e31e864d94e5958f3144f1d79b4ff016ede7d8e;hp=ab51eabd478983de080353a34141a549ffc1992f;hb=377a5bd60d3854ab81df4c24bd3a3cdb18f4e241;hpb=31f66267ae9763dcecd44c1e749fe0e91b5a3a01 diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index ab51eabd47..6e31e864d9 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -56,6 +56,7 @@ use MediaWiki\FileBackend\LockManager\LockManagerGroupFactory; use MediaWiki\Http\HttpRequestFactory; use MediaWiki\Interwiki\ClassicInterwikiLookup; use MediaWiki\Interwiki\InterwikiLookup; +use MediaWiki\Languages\LanguageNameUtils; use MediaWiki\Linker\LinkRenderer; use MediaWiki\Linker\LinkRendererFactory; use MediaWiki\Logger\LoggerFactory; @@ -107,7 +108,7 @@ return [ $services->getDBLoadBalancerFactory(), $services->getExternalStoreAccess(), $services->getMainWANObjectCache(), - new ServiceOptions( BlobStoreFactory::$constructorOptions, + new ServiceOptions( BlobStoreFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ), $services->getContentLanguage() ); @@ -116,7 +117,7 @@ return [ 'BlockManager' => function ( MediaWikiServices $services ) : BlockManager { return new BlockManager( new ServiceOptions( - BlockManager::$constructorOptions, $services->getMainConfig() + BlockManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ), $services->getPermissionManager(), LoggerFactory::getInstance( 'BlockManager' ) @@ -199,7 +200,7 @@ return [ $lbConf = MWLBFactory::applyDefaultConfig( $mainConfig->get( 'LBFactoryConf' ), - new ServiceOptions( MWLBFactory::$applyDefaultConfigOptions, $mainConfig ), + new ServiceOptions( MWLBFactory::APPLY_DEFAULT_CONFIG_OPTIONS, $mainConfig ), $services->getConfiguredReadOnlyMode(), $services->getLocalServerObjectCache(), $services->getMainObjectStash(), @@ -207,10 +208,7 @@ return [ ); $class = MWLBFactory::getLBFactoryClass( $lbConf ); - $instance = new $class( $lbConf ); - MWLBFactory::setSchemaAliases( $instance, $mainConfig->get( 'DBtype' ) ); - - return $instance; + return new $class( $lbConf ); }, 'EventRelayerGroup' => function ( MediaWikiServices $services ) : EventRelayerGroup { @@ -262,6 +260,13 @@ return [ ); }, + 'LanguageNameUtils' => function ( MediaWikiServices $services ) : LanguageNameUtils { + return new LanguageNameUtils( new ServiceOptions( + LanguageNameUtils::$constructorOptions, + $services->getMainConfig() + ) ); + }, + 'LinkCache' => function ( MediaWikiServices $services ) : LinkCache { return new LinkCache( $services->getTitleFormatter(), @@ -290,6 +295,37 @@ return [ ); }, + 'LocalisationCache' => function ( MediaWikiServices $services ) : LocalisationCache { + $conf = $services->getMainConfig()->get( 'LocalisationCacheConf' ); + + $logger = LoggerFactory::getInstance( 'localisation' ); + + $store = LocalisationCache::getStoreFromConf( + $conf, $services->getMainConfig()->get( 'CacheDirectory' ) ); + $logger->debug( 'LocalisationCache: using store ' . get_class( $store ) ); + + return new $conf['class']( + new ServiceOptions( + LocalisationCache::CONSTRUCTOR_OPTIONS, + // Two of the options are stored in $wgLocalisationCacheConf + $conf, + // In case someone set that config variable and didn't reset all keys, set defaults. + [ + 'forceRecache' => false, + 'manualRecache' => false, + ], + // Some other options come from config itself + $services->getMainConfig() + ), + $store, + $logger, + [ function () use ( $services ) { + $services->getResourceLoader()->getMessageBlobStore()->clear(); + } ], + $services->getLanguageNameUtils() + ); + }, + 'LocalServerObjectCache' => function ( MediaWikiServices $services ) : BagOStuff { $config = $services->getMainConfig(); $cacheId = ObjectCache::detectLocalServerCache(); @@ -336,14 +372,35 @@ return [ } $params = $mainConfig->get( 'WANObjectCaches' )[$id]; + + $logger = LoggerFactory::getInstance( $params['loggroup'] ?? 'objectcache' ); + $objectCacheId = $params['cacheId']; if ( !isset( $mainConfig->get( 'ObjectCaches' )[$objectCacheId] ) ) { throw new UnexpectedValueException( "Cache type \"$objectCacheId\" is not present in \$wgObjectCaches." ); } - $params['store'] = $mainConfig->get( 'ObjectCaches' )[$objectCacheId]; + $storeParams = $mainConfig->get( 'ObjectCaches' )[$objectCacheId]; + $store = ObjectCache::newFromParams( $storeParams ); + $logger->debug( 'MainWANObjectCache using store {class}', [ + 'class' => get_class( $store ) + ] ); + + $params['logger'] = $logger; + $params['cache'] = $store; + $params['secret'] = $params['secret'] ?? $mainConfig->get( 'SecretKey' ); + if ( !$mainConfig->get( 'CommandLineMode' ) ) { + // Send the statsd data post-send on HTTP requests; avoid in CLI mode (T181385) + $params['stats'] = $services->getStatsdDataFactory(); + // Let pre-emptive refreshes happen post-send on HTTP requests + $params['asyncHandler'] = [ DeferredUpdates::class, 'addCallableUpdate' ]; + } - return ObjectCache::newWANCacheFromParams( $params ); + $class = $params['class']; + $instance = new $class( $params ); + + '@phan-var WANObjectCache $instance'; + return $instance; }, 'MediaHandlerFactory' => function ( MediaWikiServices $services ) : MediaHandlerFactory { @@ -524,6 +581,17 @@ return [ ); }, + 'PasswordReset' => function ( MediaWikiServices $services ) : PasswordReset { + $options = new ServiceOptions( PasswordReset::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ); + return new PasswordReset( + $options, + AuthManager::singleton(), + $services->getPermissionManager(), + $services->getDBLoadBalancer(), + LoggerFactory::getInstance( 'authentication' ) + ); + }, + 'PerDbNameStatsdDataFactory' => function ( MediaWikiServices $services ) : StatsdDataFactoryInterface { $config = $services->getMainConfig(); @@ -537,7 +605,7 @@ return [ 'PermissionManager' => function ( MediaWikiServices $services ) : PermissionManager { return new PermissionManager( new ServiceOptions( - PermissionManager::$constructorOptions, $services->getMainConfig() + PermissionManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ), $services->getSpecialPageFactory(), $services->getRevisionLookup(), @@ -548,7 +616,7 @@ return [ 'PreferencesFactory' => function ( MediaWikiServices $services ) : PreferencesFactory { $factory = new DefaultPreferencesFactory( new ServiceOptions( - DefaultPreferencesFactory::$constructorOptions, $services->getMainConfig() ), + DefaultPreferencesFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ), $services->getContentLanguage(), AuthManager::singleton(), $services->getLinkRendererFactory()->create(),