Previously, MediaWikiServices would be initialized on the first
wfLoadExtension() call, which is super early and before it should be.
There's actually no reason we need to create the BagOStuff object in the
constructor, so let's defer it to loadFromQueue(). It now gets called
from the top of Setup.php, which is still a little early, but better
than before.
Bug: T154960
Change-Id: I3feef3b974ba1ba3afec0d453e1899cd476e72fb
*/
const MERGE_STRATEGY = '_merge_strategy';
*/
const MERGE_STRATEGY = '_merge_strategy';
- /**
- * @var BagOStuff
- */
- protected $cache;
-
/**
* Array of loaded things, keyed by name, values are credits information
*
/**
* Array of loaded things, keyed by name, values are credits information
*
return self::$instance;
}
return self::$instance;
}
- public function __construct() {
- // We use a try/catch because we don't want to fail here
- // if $wgObjectCaches is not configured properly for APC setup
- try {
- $this->cache = MediaWikiServices::getInstance()->getLocalServerObjectCache();
- } catch ( MWException $e ) {
- $this->cache = new EmptyBagOStuff();
- }
- }
-
/**
* @param string $path Absolute path to the JSON file
*/
/**
* @param string $path Absolute path to the JSON file
*/
'mediawiki' => $wgVersion
];
'mediawiki' => $wgVersion
];
+ // We use a try/catch because we don't want to fail here
+ // if $wgObjectCaches is not configured properly for APC setup
+ try {
+ $cache = MediaWikiServices::getInstance()->getLocalServerObjectCache();
+ } catch ( MWException $e ) {
+ $cache = new EmptyBagOStuff();
+ }
// See if this queue is in APC
$key = wfMemcKey(
'registration',
md5( json_encode( $this->queued + $versions ) )
);
// See if this queue is in APC
$key = wfMemcKey(
'registration',
md5( json_encode( $this->queued + $versions ) )
);
- $data = $this->cache->get( $key );
+ $data = $cache->get( $key );
if ( $data ) {
$this->exportExtractedData( $data );
} else {
if ( $data ) {
$this->exportExtractedData( $data );
} else {
// did that, but it should be cached
$data['globals']['wgAutoloadClasses'] += $data['autoload'];
unset( $data['autoload'] );
// did that, but it should be cached
$data['globals']['wgAutoloadClasses'] += $data['autoload'];
unset( $data['autoload'] );
- $this->cache->set( $key, $data, 60 * 60 * 24 );
+ $cache->set( $key, $data, 60 * 60 * 24 );