Remove deprecated Language::$mLangObjCache
Removing this deprecated cache allows LanguageFactory to start using MapCacheLRU instead of implementing LRU semantics manually. Change-Id: I8093067fb6f51110351b8592fcbcfa7559d942ee
This commit is contained in:
parent
1c798839fd
commit
0484ac9e7a
5 changed files with 13 additions and 36 deletions
|
|
@ -356,6 +356,7 @@ because of Phabricator reports.
|
|||
* Content::getSecondaryDataUpdates(), was removed. Use
|
||||
ContentHandler::getSecondaryDataUpdates() instead.
|
||||
* wfDiff(), deprecated since 1.25, has been removed.
|
||||
* Language::$mLangObjCache, deprecated since 1.35, was removed.
|
||||
* …
|
||||
|
||||
=== Deprecations in 1.37 ===
|
||||
|
|
|
|||
|
|
@ -487,9 +487,6 @@ abstract class Installer {
|
|||
// Disable i18n cache
|
||||
$mwServices->getLocalisationCache()->disableBackend();
|
||||
|
||||
// Clear language cache so the old i18n cache doesn't sneak back in
|
||||
Language::$mLangObjCache = [];
|
||||
|
||||
// Set a fake user.
|
||||
// Note that this will reset the context's language,
|
||||
// so set the user before setting the language.
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ namespace MediaWiki\Languages;
|
|||
use Language;
|
||||
use LanguageConverter;
|
||||
use LocalisationCache;
|
||||
use MapCacheLRU;
|
||||
use MediaWiki\Config\ServiceOptions;
|
||||
use MediaWiki\HookContainer\HookContainer;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MWException;
|
||||
|
||||
/**
|
||||
|
|
@ -58,8 +58,8 @@ class LanguageFactory {
|
|||
/** @var HookContainer */
|
||||
private $hookContainer;
|
||||
|
||||
/** @var array */
|
||||
private $langObjCache = [];
|
||||
/** @var MapCacheLRU|null */
|
||||
private $langObjCache = null;
|
||||
|
||||
/** @var array */
|
||||
private $parentLangCache = [];
|
||||
|
|
@ -96,6 +96,9 @@ class LanguageFactory {
|
|||
$this->langFallback = $langFallback;
|
||||
$this->langConverterFactory = $langConverterFactory;
|
||||
$this->hookContainer = $hookContainer;
|
||||
if ( $options->get( 'LangObjCacheSize' ) ) {
|
||||
$this->langObjCache = new MapCacheLRU( $options->get( 'LangObjCacheSize' ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -108,32 +111,16 @@ class LanguageFactory {
|
|||
public function getLanguage( $code ): Language {
|
||||
$code = $this->options->get( 'DummyLanguageCodes' )[$code] ?? $code;
|
||||
|
||||
// This is horrible, horrible code, but is necessary to support Language::$mLangObjCache
|
||||
// per the deprecation policy. Kill with fire in 1.36!
|
||||
if (
|
||||
MediaWikiServices::hasInstance() &&
|
||||
$this === MediaWikiServices::getInstance()->getLanguageFactory()
|
||||
) {
|
||||
$this->langObjCache = Language::$mLangObjCache;
|
||||
if ( !$this->langObjCache ) {
|
||||
return $this->newFromCode( $code );
|
||||
}
|
||||
|
||||
// Get the language object to process
|
||||
$langObj = $this->langObjCache[$code] ?? $this->newFromCode( $code );
|
||||
|
||||
// Merge the language object in to get it up front in the cache
|
||||
$this->langObjCache = array_merge( [ $code => $langObj ], $this->langObjCache );
|
||||
// Get rid of the oldest ones in case we have an overflow
|
||||
$this->langObjCache =
|
||||
array_slice( $this->langObjCache, 0, $this->options->get( 'LangObjCacheSize' ), true );
|
||||
|
||||
// As above, remove this in 1.36
|
||||
if (
|
||||
MediaWikiServices::hasInstance() &&
|
||||
$this === MediaWikiServices::getInstance()->getLanguageFactory()
|
||||
) {
|
||||
Language::$mLangObjCache = $this->langObjCache;
|
||||
if ( $this->langObjCache->has( $code ) ) {
|
||||
return $this->langObjCache->get( $code );
|
||||
}
|
||||
|
||||
$langObj = $this->newFromCode( $code );
|
||||
$this->langObjCache->set( $code, $langObj );
|
||||
return $langObj;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -121,12 +121,6 @@ class Language {
|
|||
*/
|
||||
private $hookRunner;
|
||||
|
||||
/**
|
||||
* @deprecated since 1.35, use LanguageFactory
|
||||
* @var array
|
||||
*/
|
||||
public static $mLangObjCache = [];
|
||||
|
||||
/**
|
||||
* Return a fallback chain for messages in getFallbacksFor
|
||||
* @since 1.32
|
||||
|
|
|
|||
|
|
@ -927,7 +927,6 @@ abstract class MediaWikiIntegrationTestCase extends PHPUnit\Framework\TestCase {
|
|||
}
|
||||
|
||||
self::resetLegacyGlobals();
|
||||
Language::$mLangObjCache = [];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -981,7 +980,6 @@ abstract class MediaWikiIntegrationTestCase extends PHPUnit\Framework\TestCase {
|
|||
}
|
||||
|
||||
self::resetLegacyGlobals();
|
||||
Language::$mLangObjCache = [];
|
||||
|
||||
return $newInstance;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue