diff options
author | Aaron Schulz <aschulz@wikimedia.org> | 2016-04-22 12:52:06 -0700 |
---|---|---|
committer | Aaron Schulz <aschulz@wikimedia.org> | 2016-04-25 12:08:09 -0700 |
commit | 09a0a5e4f6b6ee2117e32e15e67d166c426a727f (patch) | |
tree | 91c11defcdcc04ce8f1e1a498f0aae9856d350b6 /includes/libs | |
parent | 5350257ecfeb06e7b4664af5bf21103da1dc665f (diff) | |
download | mediawikicore-09a0a5e4f6b6ee2117e32e15e67d166c426a727f.tar.gz mediawikicore-09a0a5e4f6b6ee2117e32e15e67d166c426a727f.zip |
Make WAN cache config use $wgEventRelayerConfig
This makes the channels more explicit and defined in a less
ad-hoc way. Systems like Kafka would prefer explicit channel
definitions anyway, so the channel prefix just obscures things.
Change-Id: I5631eb1b1382083396a0f08904d9273cc92601e8
Diffstat (limited to 'includes/libs')
-rw-r--r-- | includes/libs/eventrelayer/EventRelayer.php | 4 | ||||
-rw-r--r-- | includes/libs/objectcache/WANObjectCache.php | 32 |
2 files changed, 17 insertions, 19 deletions
diff --git a/includes/libs/eventrelayer/EventRelayer.php b/includes/libs/eventrelayer/EventRelayer.php index f28a4c0c2674..b0cd413699f1 100644 --- a/includes/libs/eventrelayer/EventRelayer.php +++ b/includes/libs/eventrelayer/EventRelayer.php @@ -54,10 +54,6 @@ abstract class EventRelayer implements LoggerAwareInterface { return $this->doNotify( $channel, $events ); } - /** - * Set logger instance. - * @param LoggerInterface $logger - */ public function setLogger( LoggerInterface $logger ) { $this->logger = $logger; } diff --git a/includes/libs/objectcache/WANObjectCache.php b/includes/libs/objectcache/WANObjectCache.php index dd2e0d5d4b55..57cecd0e78be 100644 --- a/includes/libs/objectcache/WANObjectCache.php +++ b/includes/libs/objectcache/WANObjectCache.php @@ -69,10 +69,10 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { protected $cache; /** @var HashBagOStuff Script instance PHP cache */ protected $procCache; - /** @var string Cache pool name */ - protected $pool; + /** @var string Purge channel name */ + protected $purgeChannel; /** @var EventRelayer Bus that handles purge broadcasts */ - protected $relayer; + protected $purgeRelayer; /** @var LoggerInterface */ protected $logger; @@ -134,25 +134,27 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { const MAX_PC_KEYS = 1000; // max keys to keep in process cache + const DEFAULT_PURGE_CHANNEL = 'wancache-purge'; + /** * @param array $params - * - cache : BagOStuff object - * - pool : pool name - * - relayer : EventRelayer object - * - logger : LoggerInterface object + * - cache : BagOStuff object for a persistent cache + * - channels : Map of (action => channel string). Actions include "purge". + * - relayers : Map of (action => EventRelayer object). Actions include "purge". + * - logger : LoggerInterface object */ public function __construct( array $params ) { $this->cache = $params['cache']; - $this->pool = $params['pool']; - $this->relayer = $params['relayer']; $this->procCache = new HashBagOStuff( [ 'maxKeys' => self::MAX_PC_KEYS ] ); + $this->purgeChannel = isset( $params['channels']['purge'] ) + ? $params['channels']['purge'] + : self::DEFAULT_PURGE_CHANNEL; + $this->purgeRelayer = isset( $params['relayers']['purge'] ) + ? $params['relayers']['purge'] + : new EventRelayerNull( [] ); $this->setLogger( isset( $params['logger'] ) ? $params['logger'] : new NullLogger() ); } - /** - * Set logger instance. - * @param LoggerInterface $logger - */ public function setLogger( LoggerInterface $logger ) { $this->logger = $logger; } @@ -950,7 +952,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { 'sbt' => true, // substitute $UNIXTIME$ with actual microtime ] ); - $ok = $this->relayer->notify( "{$this->pool}:purge", $event ); + $ok = $this->purgeRelayer->notify( $this->purgeChannel, $event ); if ( !$ok ) { $this->lastRelayError = self::ERR_RELAY; } @@ -970,7 +972,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { 'key' => $key, ] ); - $ok = $this->relayer->notify( "{$this->pool}:purge", $event ); + $ok = $this->purgeRelayer->notify( $this->purgeChannel, $event ); if ( !$ok ) { $this->lastRelayError = self::ERR_RELAY; } |