*/
use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\MediaWikiServices;
+use MediaWiki\Services\ServiceDisabledException;
/**
* Functions to get cache objects
} elseif ( isset( $params['class'] ) ) {
$class = $params['class'];
// Automatically set the 'async' update handler
- if ( $class === 'MultiWriteBagOStuff' ) {
- $params['asyncHandler'] = isset( $params['asyncHandler'] )
- ? $params['asyncHandler']
- : 'DeferredUpdates::addCallableUpdate';
- }
+ $params['asyncHandler'] = isset( $params['asyncHandler'] )
+ ? $params['asyncHandler']
+ : 'DeferredUpdates::addCallableUpdate';
+ // Enable reportDupes by default
+ $params['reportDupes'] = isset( $params['reportDupes'] )
+ ? $params['reportDupes']
+ : true;
// Do b/c logic for MemcachedBagOStuff
if ( is_subclass_of( $class, 'MemcachedBagOStuff' ) ) {
if ( !isset( $params['servers'] ) ) {
return self::getInstance( $candidate );
}
}
- return self::getInstance( CACHE_DB );
+
+ try {
+ // Make sure we actually have a DB backend before falling back to CACHE_DB
+ MediaWikiServices::getInstance()->getDBLoadBalancer();
+ $candidate = CACHE_DB;
+ } catch ( ServiceDisabledException $e ) {
+ // The LoadBalancer is disabled, probably because
+ // MediaWikiServices::disableStorageBackend was called.
+ $candidate = CACHE_NONE;
+ }
+
+ return self::getInstance( $candidate );
}
/**
}
$params = $wgWANObjectCaches[$id];
- $class = $params['relayerConfig']['class'];
- $params['relayer'] = new $class( $params['relayerConfig'] );
+ foreach ( $params['channels'] as $action => $channel ) {
+ $params['relayers'][$action] = MediaWikiServices::getInstance()->getEventRelayerGroup()
+ ->getRelayer( $channel );
+ $params['channels'][$action] = $channel;
+ }
$params['cache'] = self::newFromId( $params['cacheId'] );
if ( isset( $params['loggroup'] ) ) {
$params['logger'] = LoggerFactory::getInstance( $params['loggroup'] );