Merge "Special:ProtectedPages: Convert to OOUI"
[lhc/web/wiklou.git] / includes / objectcache / ObjectCache.php
index 6d6d345..a6f55e6 100644 (file)
@@ -332,20 +332,29 @@ class ObjectCache {
         * @throws UnexpectedValueException
         */
        public static function newWANCacheFromParams( array $params ) {
+               global $wgCommandLineMode;
+
                $services = MediaWikiServices::getInstance();
 
                $erGroup = $services->getEventRelayerGroup();
-               foreach ( $params['channels'] as $action => $channel ) {
-                       $params['relayers'][$action] = $erGroup->getRelayer( $channel );
-                       $params['channels'][$action] = $channel;
+               if ( isset( $params['channels'] ) ) {
+                       foreach ( $params['channels'] as $action => $channel ) {
+                               $params['relayers'][$action] = $erGroup->getRelayer( $channel );
+                               $params['channels'][$action] = $channel;
+                       }
                }
                $params['cache'] = self::newFromParams( $params['store'] );
-               $params['stats'] = $services->getStatsdDataFactory();
                if ( isset( $params['loggroup'] ) ) {
                        $params['logger'] = LoggerFactory::getInstance( $params['loggroup'] );
                } else {
                        $params['logger'] = LoggerFactory::getInstance( 'objectcache' );
                }
+               if ( !$wgCommandLineMode ) {
+                       // Send the statsd data post-send on HTTP requests; avoid in CLI mode (T181385)
+                       $params['stats'] = $services->getStatsdDataFactory();
+                       // Let pre-emptive refreshes happen post-send on HTTP requests
+                       $params['asyncHandler'] = [ DeferredUpdates::class, 'addCallableUpdate' ];
+               }
                $class = $params['class'];
 
                return new $class( $params );