From 4f9536587784fd238726ac858c2b5c76c89ea320 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Fri, 22 Apr 2016 17:09:14 -0700 Subject: [PATCH] Convert EventRelayerGroup to services infrastructure Change-Id: If55ddf441de69189c7fcdd3440f899c6b14f690f --- includes/EventRelayerGroup.php | 18 +++++++----------- includes/MediaWikiServices.php | 7 +++++++ includes/ServiceWiring.php | 4 ++++ includes/deferred/CdnCacheUpdate.php | 4 +++- includes/objectcache/ObjectCache.php | 4 +++- .../phpunit/includes/MediaWikiServicesTest.php | 2 ++ 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/includes/EventRelayerGroup.php b/includes/EventRelayerGroup.php index 9dfac795a6..9360693a4b 100644 --- a/includes/EventRelayerGroup.php +++ b/includes/EventRelayerGroup.php @@ -1,4 +1,6 @@ configByChannel = $config->get( 'EventRelayerConfig' ); + public function __construct( array $config ) { + $this->configByChannel = $config; } /** + * @deprecated since 1.27 Use MediaWikiServices::getInstance()->getEventRelayerGroup() * @return EventRelayerGroup */ public static function singleton() { - if ( !self::$instance ) { - self::$instance = new self( RequestContext::getMain()->getConfig() ); - } - - return self::$instance; + return MediaWikiServices::getInstance()->getEventRelayerGroup(); } /** diff --git a/includes/MediaWikiServices.php b/includes/MediaWikiServices.php index 3f4d8ed7c7..9a942a55d0 100644 --- a/includes/MediaWikiServices.php +++ b/includes/MediaWikiServices.php @@ -152,6 +152,13 @@ class MediaWikiServices extends ServiceContainer { return $this->getService( 'StatsdDataFactory' ); } + /** + * @return EventRelayerGroup + */ + public function getEventRelayerGroup() { + return $this->getService( 'EventRelayerGroup' ); + } + /////////////////////////////////////////////////////////////////////////// // NOTE: When adding a service getter here, don't forget to add a test // case for it in MediaWikiServicesTest::provideGetters() and in diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index 7e1d4e314e..991a67d737 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -78,6 +78,10 @@ return [ ); }, + 'EventRelayerGroup' => function( MediaWikiServices $services ) { + return new EventRelayerGroup( $services->getMainConfig()->get( 'EventRelayerConfig' ) ); + }, + /////////////////////////////////////////////////////////////////////////// // NOTE: When adding a service here, don't forget to add a getter function // in the MediaWikiServices class. The convenience getter should just call diff --git a/includes/deferred/CdnCacheUpdate.php b/includes/deferred/CdnCacheUpdate.php index 32f6adc642..65ff9f307d 100644 --- a/includes/deferred/CdnCacheUpdate.php +++ b/includes/deferred/CdnCacheUpdate.php @@ -22,6 +22,7 @@ */ use Wikimedia\Assert\Assert; +use MediaWiki\MediaWikiServices; /** * Handles purging appropriate CDN URLs given a title (or titles) @@ -109,7 +110,8 @@ class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate { wfDebugLog( 'squid', __METHOD__ . ': ' . implode( ' ', $urlArr ) ); // Reliably broadcast the purge to all edge nodes - $relayer = EventRelayerGroup::singleton()->getRelayer( 'cdn-url-purges' ); + $relayer = MediaWikiServices::getInstance()->getEventRelayerGroup() + ->getRelayer( 'cdn-url-purges' ); $relayer->notify( 'cdn-url-purges', [ diff --git a/includes/objectcache/ObjectCache.php b/includes/objectcache/ObjectCache.php index e9f2211aaf..24846e6ed6 100644 --- a/includes/objectcache/ObjectCache.php +++ b/includes/objectcache/ObjectCache.php @@ -22,6 +22,7 @@ */ use MediaWiki\Logger\LoggerFactory; +use MediaWiki\MediaWikiServices; /** * Functions to get cache objects @@ -299,7 +300,8 @@ class ObjectCache { $params = $wgWANObjectCaches[$id]; foreach ( $params['channels'] as $action => $channel ) { - $params['relayers'][$action] = EventRelayerGroup::singleton()->getRelayer( $channel ); + $params['relayers'][$action] = MediaWikiServices::getInstance()->getEventRelayerGroup() + ->getRelayer( $channel ); $params['channels'][$action] = $channel; } $params['cache'] = self::newFromId( $params['cacheId'] ); diff --git a/tests/phpunit/includes/MediaWikiServicesTest.php b/tests/phpunit/includes/MediaWikiServicesTest.php index 188957569b..a89bd90931 100644 --- a/tests/phpunit/includes/MediaWikiServicesTest.php +++ b/tests/phpunit/includes/MediaWikiServicesTest.php @@ -25,6 +25,7 @@ class MediaWikiServicesTest extends PHPUnit_Framework_TestCase { 'SiteStore' => [ 'getSiteStore', SiteStore::class ], 'SiteLookup' => [ 'getSiteLookup', SiteLookup::class ], 'StatsdDataFactory' => [ 'getStatsdDataFactory', StatsdDataFactory::class ], + 'EventRelayerGroup' => [ 'getEventRelayerGroup', EventRelayerGroup::class ], ]; } @@ -49,6 +50,7 @@ class MediaWikiServicesTest extends PHPUnit_Framework_TestCase { 'SiteStore' => [ 'SiteStore', SiteStore::class ], 'SiteLookup' => [ 'SiteLookup', SiteLookup::class ], 'StatsdDataFactory' => [ 'StatsdDataFactory', StatsdDataFactory::class ], + 'EventRelayerGroup' => [ 'EventRelayerGroup', EventRelayerGroup::class ], ]; } -- 2.20.1