aboutsummaryrefslogtreecommitdiffstats
path: root/includes/libs
diff options
context:
space:
mode:
authorAaron Schulz <aschulz@wikimedia.org>2016-04-22 12:52:06 -0700
committerAaron Schulz <aschulz@wikimedia.org>2016-04-25 12:08:09 -0700
commit09a0a5e4f6b6ee2117e32e15e67d166c426a727f (patch)
tree91c11defcdcc04ce8f1e1a498f0aae9856d350b6 /includes/libs
parent5350257ecfeb06e7b4664af5bf21103da1dc665f (diff)
downloadmediawikicore-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.php4
-rw-r--r--includes/libs/objectcache/WANObjectCache.php32
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;
}