);
/**
- * Main cache Wide-Area-Network cache type. This should be a cache with fast access,
+ * Main Wide-Area-Network cache type. This should be a cache with fast access,
* but it may have limited space. By default, it is disabled, since the basic stock
* cache is not fast enough to make it worthwhile. For single data-center setups, this can
* simply be pointed to a cache in $wgWANObjectCaches that uses a local $wgObjectCaches
* a relayer (only matters if there are multiple data-centers)
* - CACHE_NONE: Do not cache
* - (other): A string may be used which identifies a cache
- * configuration in $wgWANObjectCaches.
+ * configuration in $wgWANObjectCaches
+ * @since 1.26
*/
$wgMainWANCache = false;
* a cache identifier from $wgObjectCaches. The "relayerConfig" parameter is an
* array used to construct an EventRelayer object. The "pool" parameter is a
* string that is used as a PubSub channel prefix.
+ *
+ * @since 1.26
*/
$wgWANObjectCaches = array(
CACHE_NONE => array(
*/
);
+/**
+ * Main object stash type. This should be a fast storage system for storing
+ * lightweight data like hit counters and user activity. Sites with multiple
+ * data-centers should have this use a store that replicates all writes. The
+ * store should have enough consistency for CAS operations to be usable.
+ *
+ * The options are:
+ * - db: Store cache objects in the DB
+ * - (other): A string may be used which identifies a cache
+ * configuration in $wgObjectCaches
+ *
+ * @since 1.26
+ */
+$wgMainStash = 'db';
+
/**
* The expiry time for the parser cache, in seconds.
* The default is 86400 (one day).
/**
* Functions to get cache objects
*
+ * The word "cache" has two main dictionary meanings, and both
+ * are used in this factory class. They are:
+ * - a) A place to store copies or computations on existing data
+ * for higher access speeds (the computer science definition)
+ * - b) A place to store lightweight data that is not canonically
+ * stored anywhere else (e.g. a "hoard" of objects)
+ *
* @ingroup Cache
*/
class ObjectCache {
return self::getWANInstance( $wgMainWANCache );
}
+
+ /**
+ * Stash objects are BagOStuff instances suitable for storing light
+ * weight data that is not canonically stored elsewhere (such as RDBMS).
+ * Stashes should be configured to propagate changes to all data-centers.
+ *
+ * Callers should be prepared for:
+ * - a) Writes to be slower in non-"primary" (e.g. HTTP GET/HEAD only) DCs
+ * - b) Reads to be eventually consistent, e.g. for get()/getMulti()
+ * In general, this means avoiding updates on idempotent HTTP requests and
+ * avoiding an assumption of perfect serializability (or accepting anomalies).
+ * Reads may be eventually consistent or data might rollback as nodes flap.
+ *
+ *
+ * @return BagOStuff
+ * @since 1.26
+ */
+ static function getMainStashInstance() {
+ global $wgMainStash;
+
+ return self::getInstance( $wgMainStash );
+ }
}