Merge "Inject LoadBalancer into GenderCache"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 10 Aug 2019 23:43:06 +0000 (23:43 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 10 Aug 2019 23:43:06 +0000 (23:43 +0000)
1  2 
includes/ServiceWiring.php

@@@ -82,7 -82,6 +82,7 @@@ return 
        'BlobStoreFactory' => function ( MediaWikiServices $services ) : BlobStoreFactory {
                return new BlobStoreFactory(
                        $services->getDBLoadBalancerFactory(),
 +                      $services->getExternalStoreAccess(),
                        $services->getMainWANObjectCache(),
                        new ServiceOptions( BlobStoreFactory::$constructorOptions,
                                $services->getMainConfig() ),
        },
  
        'BlockManager' => function ( MediaWikiServices $services ) : BlockManager {
 -              $config = $services->getMainConfig();
                $context = RequestContext::getMain();
                return new BlockManager(
 +                      new ServiceOptions(
 +                              BlockManager::$constructorOptions, $services->getMainConfig()
 +                      ),
                        $context->getUser(),
 -                      $context->getRequest(),
 -                      $config->get( 'ApplyIpBlocksToXff' ),
 -                      $config->get( 'CookieSetOnAutoblock' ),
 -                      $config->get( 'CookieSetOnIpBlock' ),
 -                      $config->get( 'DnsBlacklistUrls' ),
 -                      $config->get( 'EnableDnsBlacklist' ),
 -                      $config->get( 'ProxyList' ),
 -                      $config->get( 'ProxyWhitelist' ),
 -                      $config->get( 'SoftBlockRanges' )
 +                      $context->getRequest()
                );
        },
  
                return new EventRelayerGroup( $services->getMainConfig()->get( 'EventRelayerConfig' ) );
        },
  
 +      'ExternalStoreAccess' => function ( MediaWikiServices $services ) : ExternalStoreAccess {
 +              return new ExternalStoreAccess(
 +                      $services->getExternalStoreFactory(),
 +                      LoggerFactory::getInstance( 'ExternalStore' )
 +              );
 +      },
 +
        'ExternalStoreFactory' => function ( MediaWikiServices $services ) : ExternalStoreFactory {
                $config = $services->getMainConfig();
 +              $writeStores = $config->get( 'DefaultExternalStore' );
  
                return new ExternalStoreFactory(
 -                      $config->get( 'ExternalStores' )
 +                      $config->get( 'ExternalStores' ),
 +                      ( $writeStores !== false ) ? (array)$writeStores : [],
 +                      $services->getDBLoadBalancer()->getLocalDomainID(),
 +                      LoggerFactory::getInstance( 'ExternalStore' )
                );
        },
  
        'GenderCache' => function ( MediaWikiServices $services ) : GenderCache {
-               return new GenderCache( $services->getNamespaceInfo() );
+               $nsInfo = $services->getNamespaceInfo();
+               // Database layer may be disabled, so processing without database connection
+               $dbLoadBalancer = $services->isServiceDisabled( 'DBLoadBalancer' )
+                       ? null
+                       : $services->getDBLoadBalancer();
+               return new GenderCache( $nsInfo, $dbLoadBalancer );
        },
  
        'HttpRequestFactory' =>
  
        'LocalServerObjectCache' => function ( MediaWikiServices $services ) : BagOStuff {
                $cacheId = \ObjectCache::detectLocalServerCache();
 +
                return \ObjectCache::newFromId( $cacheId );
        },
  
                        wfUrlProtocols(),
                        $services->getSpecialPageFactory(),
                        $services->getLinkRendererFactory(),
 -                      $services->getNamespaceInfo()
 +                      $services->getNamespaceInfo(),
 +                      LoggerFactory::getInstance( 'Parser' )
                );
        },
  
                $config = $services->getMainConfig();
                return new PermissionManager(
                        $services->getSpecialPageFactory(),
 +                      $services->getRevisionLookup(),
                        $config->get( 'WhitelistRead' ),
                        $config->get( 'WhitelistReadRegexp' ),
                        $config->get( 'EmailConfirmToEdit' ),
                        $config->get( 'BlockDisablesLogin' ),
 +                      $config->get( 'GroupPermissions' ),
 +                      $config->get( 'RevokePermissions' ),
 +                      $config->get( 'AvailableRights' ),
                        $services->getNamespaceInfo()
                );
        },
        'SiteStore' => function ( MediaWikiServices $services ) : SiteStore {
                $rawSiteStore = new DBSiteStore( $services->getDBLoadBalancer() );
  
 -              // TODO: replace wfGetCache with a CacheFactory service.
 -              // TODO: replace wfIsHHVM with a capabilities service.
 -              $cache = wfGetCache( wfIsHHVM() ? CACHE_ACCEL : CACHE_ANYTHING );
 +              $cache = $services->getLocalServerObjectCache();
 +              if ( $cache instanceof EmptyBagOStuff ) {
 +                      $cache = ObjectCache::getLocalClusterInstance();
 +              }
  
                return new CachingSiteStore( $rawSiteStore, $cache );
        },