Merge "Upgrade premature implicit transaction commits to exceptions"
[lhc/web/wiklou.git] / includes / objectcache / ObjectCache.php
index bf152b6..1083393 100644 (file)
@@ -22,6 +22,8 @@
  */
 
 use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\MediaWikiServices;
+use MediaWiki\Services\ServiceDisabledException;
 
 /**
  * Functions to get cache objects
@@ -225,7 +227,16 @@ class ObjectCache {
                                return self::getInstance( $candidate );
                        }
                }
-               return self::getInstance( CACHE_DB );
+
+               if ( MediaWikiServices::getInstance()->isServiceDisabled( 'DBLoadBalancer' ) ) {
+                       // The LoadBalancer is disabled, probably because
+                       // MediaWikiServices::disableStorageBackend was called.
+                       $candidate = CACHE_NONE;
+               } else {
+                       $candidate = CACHE_DB;
+               }
+
+               return self::getInstance( $candidate );
        }
 
        /**
@@ -267,7 +278,7 @@ class ObjectCache {
         * @param array $params [optional] Array key 'fallback' for $fallback.
         * @param int|string $fallback Fallback cache, e.g. (CACHE_NONE, "hash") (since 1.24)
         * @return BagOStuff
-        * @deprecated 1.27
+        * @deprecated since 1.27
         */
        public static function newAccelerator( $params = [], $fallback = null ) {
                if ( $fallback === null ) {
@@ -298,8 +309,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'] );