ClassicInterwikiLookup: inject load balancer
Per todo comments, to avoid using wfGetDB Change-Id: Ic4a7f9c5bcbfef3042e5ec0606babbd14d3e6124
This commit is contained in:
parent
3b0fc51124
commit
ebf762cc67
3 changed files with 14 additions and 2 deletions
|
|
@ -562,6 +562,7 @@ return [
|
||||||
$services->getContentLanguage(),
|
$services->getContentLanguage(),
|
||||||
$services->getMainWANObjectCache(),
|
$services->getMainWANObjectCache(),
|
||||||
$services->getHookContainer(),
|
$services->getHookContainer(),
|
||||||
|
$services->getDBLoadBalancer(),
|
||||||
$config->get( 'InterwikiExpiry' ),
|
$config->get( 'InterwikiExpiry' ),
|
||||||
$config->get( 'InterwikiCache' ),
|
$config->get( 'InterwikiCache' ),
|
||||||
$config->get( 'InterwikiScopes' ),
|
$config->get( 'InterwikiScopes' ),
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ use MediaWiki\HookContainer\HookRunner;
|
||||||
use WANObjectCache;
|
use WANObjectCache;
|
||||||
use WikiMap;
|
use WikiMap;
|
||||||
use Wikimedia\Rdbms\Database;
|
use Wikimedia\Rdbms\Database;
|
||||||
|
use Wikimedia\Rdbms\ILoadBalancer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* InterwikiLookup implementing the "classic" interwiki storage (hardcoded up to MW 1.26).
|
* InterwikiLookup implementing the "classic" interwiki storage (hardcoded up to MW 1.26).
|
||||||
|
|
@ -95,10 +96,14 @@ class ClassicInterwikiLookup implements InterwikiLookup {
|
||||||
/** @var HookRunner */
|
/** @var HookRunner */
|
||||||
private $hookRunner;
|
private $hookRunner;
|
||||||
|
|
||||||
|
/** @var ILoadBalancer */
|
||||||
|
private $loadBalancer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Language $contLang Language object used to convert prefixes to lower case
|
* @param Language $contLang Language object used to convert prefixes to lower case
|
||||||
* @param WANObjectCache $objectCache Cache for interwiki info retrieved from the database
|
* @param WANObjectCache $objectCache Cache for interwiki info retrieved from the database
|
||||||
* @param HookContainer $hookContainer
|
* @param HookContainer $hookContainer
|
||||||
|
* @param ILoadBalancer $loadBalancer
|
||||||
* @param int $objectCacheExpiry Expiry time for $objectCache, in seconds
|
* @param int $objectCacheExpiry Expiry time for $objectCache, in seconds
|
||||||
* @param bool|array|string $cdbData The path of a CDB file, or
|
* @param bool|array|string $cdbData The path of a CDB file, or
|
||||||
* an array resembling the contents of a CDB file,
|
* an array resembling the contents of a CDB file,
|
||||||
|
|
@ -113,6 +118,7 @@ class ClassicInterwikiLookup implements InterwikiLookup {
|
||||||
Language $contLang,
|
Language $contLang,
|
||||||
WANObjectCache $objectCache,
|
WANObjectCache $objectCache,
|
||||||
HookContainer $hookContainer,
|
HookContainer $hookContainer,
|
||||||
|
ILoadBalancer $loadBalancer,
|
||||||
$objectCacheExpiry,
|
$objectCacheExpiry,
|
||||||
$cdbData,
|
$cdbData,
|
||||||
$interwikiScopes,
|
$interwikiScopes,
|
||||||
|
|
@ -123,6 +129,7 @@ class ClassicInterwikiLookup implements InterwikiLookup {
|
||||||
$this->contLang = $contLang;
|
$this->contLang = $contLang;
|
||||||
$this->objectCache = $objectCache;
|
$this->objectCache = $objectCache;
|
||||||
$this->hookRunner = new HookRunner( $hookContainer );
|
$this->hookRunner = new HookRunner( $hookContainer );
|
||||||
|
$this->loadBalancer = $loadBalancer;
|
||||||
$this->objectCacheExpiry = $objectCacheExpiry;
|
$this->objectCacheExpiry = $objectCacheExpiry;
|
||||||
$this->cdbData = $cdbData;
|
$this->cdbData = $cdbData;
|
||||||
$this->interwikiScopes = $interwikiScopes;
|
$this->interwikiScopes = $interwikiScopes;
|
||||||
|
|
@ -295,7 +302,7 @@ class ClassicInterwikiLookup implements InterwikiLookup {
|
||||||
$this->objectCache->makeKey( 'interwiki', $prefix ),
|
$this->objectCache->makeKey( 'interwiki', $prefix ),
|
||||||
$this->objectCacheExpiry,
|
$this->objectCacheExpiry,
|
||||||
function ( $oldValue, &$ttl, array &$setOpts ) use ( $prefix, $fname ) {
|
function ( $oldValue, &$ttl, array &$setOpts ) use ( $prefix, $fname ) {
|
||||||
$dbr = wfGetDB( DB_REPLICA ); // TODO: inject LoadBalancer
|
$dbr = $this->loadBalancer->getConnectionRef( DB_REPLICA );
|
||||||
|
|
||||||
$setOpts += Database::getCacheSetOptions( $dbr );
|
$setOpts += Database::getCacheSetOptions( $dbr );
|
||||||
|
|
||||||
|
|
@ -445,7 +452,7 @@ class ClassicInterwikiLookup implements InterwikiLookup {
|
||||||
* @return array[] Interwiki rows
|
* @return array[] Interwiki rows
|
||||||
*/
|
*/
|
||||||
private function getAllPrefixesDB( $local ) {
|
private function getAllPrefixesDB( $local ) {
|
||||||
$db = wfGetDB( DB_REPLICA ); // TODO: inject DB LoadBalancer
|
$db = $this->loadBalancer->getConnectionRef( DB_REPLICA );
|
||||||
|
|
||||||
$where = [];
|
$where = [];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ class ClassicInterwikiLookupTest extends MediaWikiIntegrationTestCase {
|
||||||
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ),
|
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ),
|
||||||
WANObjectCache::newEmpty(),
|
WANObjectCache::newEmpty(),
|
||||||
MediaWikiServices::getInstance()->getHookContainer(),
|
MediaWikiServices::getInstance()->getHookContainer(),
|
||||||
|
MediaWikiServices::getInstance()->getDBLoadBalancer(),
|
||||||
60 * 60,
|
60 * 60,
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
|
|
@ -156,6 +157,7 @@ class ClassicInterwikiLookupTest extends MediaWikiIntegrationTestCase {
|
||||||
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ),
|
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ),
|
||||||
WANObjectCache::newEmpty(),
|
WANObjectCache::newEmpty(),
|
||||||
MediaWikiServices::getInstance()->getHookContainer(),
|
MediaWikiServices::getInstance()->getHookContainer(),
|
||||||
|
MediaWikiServices::getInstance()->getDBLoadBalancer(),
|
||||||
60 * 60,
|
60 * 60,
|
||||||
$cdbFile,
|
$cdbFile,
|
||||||
3,
|
3,
|
||||||
|
|
@ -208,6 +210,7 @@ class ClassicInterwikiLookupTest extends MediaWikiIntegrationTestCase {
|
||||||
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ),
|
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ),
|
||||||
WANObjectCache::newEmpty(),
|
WANObjectCache::newEmpty(),
|
||||||
MediaWikiServices::getInstance()->getHookContainer(),
|
MediaWikiServices::getInstance()->getHookContainer(),
|
||||||
|
MediaWikiServices::getInstance()->getDBLoadBalancer(),
|
||||||
60 * 60,
|
60 * 60,
|
||||||
$hash,
|
$hash,
|
||||||
3,
|
3,
|
||||||
|
|
@ -262,6 +265,7 @@ class ClassicInterwikiLookupTest extends MediaWikiIntegrationTestCase {
|
||||||
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ),
|
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ),
|
||||||
WANObjectCache::newEmpty(),
|
WANObjectCache::newEmpty(),
|
||||||
MediaWikiServices::getInstance()->getHookContainer(),
|
MediaWikiServices::getInstance()->getHookContainer(),
|
||||||
|
MediaWikiServices::getInstance()->getDBLoadBalancer(),
|
||||||
60 * 60,
|
60 * 60,
|
||||||
$hash,
|
$hash,
|
||||||
3,
|
3,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue