X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FDefaultSettings.php;h=1fd9f35fe0f895df8eec7ce4ce365e044360bed4;hb=d3c2e4d385b8f372ac58420d2c94a7ccf069f8f8;hp=9b5a38ba02de8ff9c70ba326d7b7d8c7366e6ee6;hpb=2dad39b5a778c1d472acff8e59188f22d73a8621;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 9b5a38ba02..1fd9f35fe0 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -2492,11 +2492,35 @@ $wgWANObjectCaches = [ $wgEnableWANCacheReaper = false; /** - * 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. - * Reads outside of those needed for merge() may be eventually consistent. + * The object store type of the main stash. + * + * This store should be a very fast storage system optimized for holding lightweight data + * like incrementable hit counters and current user activity. The store should replicate the + * dataset among all data-centers. Any add(), merge(), lock(), and unlock() operations should + * maintain "best effort" linearizability; as long as connectivity is strong, latency is low, + * and there is no eviction pressure prompted by low free space, those operations should be + * linearizable. In terms of PACELC (https://en.wikipedia.org/wiki/PACELC_theorem), the store + * should act as a PA/EL distributed system for these operations. One optimization for these + * operations is to route them to a "primary" data-center (e.g. one that serves HTTP POST) for + * synchronous execution and then replicate to the others asynchronously. This means that at + * least calls to these operations during HTTP POST requests would quickly return. + * + * All other operations, such as get(), set(), delete(), changeTTL(), incr(), and decr(), + * should be synchronous in the local data-center, replicating asynchronously to the others. + * This behavior can be overriden by the use of the WRITE_SYNC and READ_LATEST flags. + * + * The store should *preferably* have eventual consistency to handle network partitions. + * + * Modules that rely on the stash should be prepared for: + * - add(), merge(), lock(), and unlock() to be slower than other write operations, + * at least in "secondary" data-centers (e.g. one that only serves HTTP GET/HEAD) + * - Other write operations to have race conditions accross data-centers + * - Read operations to have race conditions accross data-centers + * - Consistency to be either eventual (with Last-Write-Wins) or just "best effort" + * + * In general, this means avoiding updates during idempotent HTTP requests (GET/HEAD) and + * avoiding assumptions of true linearizability (e.g. accepting anomalies). Modules that need + * these kind of guarantees should use other storage mediums. * * The options are: * - db: Store cache objects in the DB @@ -8300,6 +8324,13 @@ $wgCrossSiteAJAXdomains = []; */ $wgCrossSiteAJAXdomainExceptions = []; +/** + * Enable the experimental REST API. + * + * This will be removed once the REST API is stable and used by clients. + */ +$wgEnableRestAPI = false; + /** @} */ # End AJAX and API } /************************************************************************//**