X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22calendrier%22%2C%22type=semaine%22%29%20.%20%22?a=blobdiff_plain;f=includes%2Fobjectcache%2FObjectCache.php;h=e1bb2db7c519a01f18b923f988f06b782817f2ce;hb=fc1d4d79602415d1362de9286b0729bd86d03fc1;hp=6d26419a6bbe9c0963c2bf61091931cb74ecd8e8;hpb=e3bd13db0c285f312e31bb1b7271af4628cca80c;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/objectcache/ObjectCache.php b/includes/objectcache/ObjectCache.php index 6d26419a6b..e1bb2db7c5 100644 --- a/includes/objectcache/ObjectCache.php +++ b/includes/objectcache/ObjectCache.php @@ -22,6 +22,8 @@ */ use MediaWiki\Logger\LoggerFactory; +use MediaWiki\MediaWikiServices; +use MediaWiki\Services\ServiceDisabledException; /** * Functions to get cache objects @@ -174,11 +176,13 @@ class ObjectCache { } 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'] ) ) { @@ -223,7 +227,18 @@ class ObjectCache { 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 ); } /** @@ -296,8 +311,11 @@ class ObjectCache { } $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'] );