X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2FServiceWiring.php;h=e83f62534a1104ee439e3dd673facd51ec536e4f;hp=f6d0ec06c91d58de6fa96b5a609a5971c125c7ba;hb=73ef860025ca4bd9a605a013f30e267a5da5d659;hpb=5444a9689f08bdd5708c3d09062d02cbcd68ce2b diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index f6d0ec06c9..e83f62534a 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; @@ -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(), @@ -259,6 +260,13 @@ return [ ); }, + 'LanguageNameUtils' => function ( MediaWikiServices $services ) : LanguageNameUtils { + return new LanguageNameUtils( new ServiceOptions( + LanguageNameUtils::CONSTRUCTOR_OPTIONS, + $services->getMainConfig() + ) ); + }, + 'LinkCache' => function ( MediaWikiServices $services ) : LinkCache { return new LinkCache( $services->getTitleFormatter(), @@ -313,7 +321,8 @@ return [ $logger, [ function () use ( $services ) { $services->getResourceLoader()->getMessageBlobStore()->clear(); - } ] + } ], + $services->getLanguageNameUtils() ); }, @@ -350,7 +359,15 @@ return [ "Cache type \"$id\" is not present in \$wgObjectCaches." ); } - return ObjectCache::newFromParams( $mainConfig->get( 'ObjectCaches' )[$id] ); + $params = $mainConfig->get( 'ObjectCaches' )[$id]; + $logger = $params['logger'] = LoggerFactory::getInstance( $params['loggroup'] ?? 'objectcache' ); + + $store = ObjectCache::newFromParams( $params ); + $logger->debug( 'MainObjectStash using store {class}', [ + 'class' => get_class( $store ) + ] ); + + return $store; }, 'MainWANObjectCache' => function ( MediaWikiServices $services ) : WANObjectCache { @@ -363,14 +380,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 { @@ -381,12 +419,21 @@ return [ 'MessageCache' => function ( MediaWikiServices $services ) : MessageCache { $mainConfig = $services->getMainConfig(); + $clusterCache = ObjectCache::getInstance( $mainConfig->get( 'MessageCacheType' ) ); + $srvCache = $mainConfig->get( 'UseLocalMessageCache' ) + ? $services->getLocalServerObjectCache() + : new EmptyBagOStuff(); + + // TODO: Inject this into MessageCache. + $logger = LoggerFactory::getInstance( 'MessageCache' ); + $logger->debug( 'MessageCache using store {class}', [ + 'class' => get_class( $clusterCache ) + ] ); + return new MessageCache( $services->getMainWANObjectCache(), - ObjectCache::getInstance( $mainConfig->get( 'MessageCacheType' ) ), - $mainConfig->get( 'UseLocalMessageCache' ) - ? $services->getLocalServerObjectCache() - : new EmptyBagOStuff(), + $clusterCache, + $srvCache, $mainConfig->get( 'UseDatabaseMessages' ), $services->getContentLanguage() );