MediaWiki  master
MediaWiki\Settings\Cache\CacheableSource Interface Reference

A SettingsSource that can be cached. More...

Inheritance diagram for MediaWiki\Settings\Cache\CacheableSource:
Collaboration diagram for MediaWiki\Settings\Cache\CacheableSource:

Public Member Functions

 allowsStaleLoad ()
 Allow the caching layer to attempt to return stale results in the event that loading from the original source fails. More...
 
 getExpiryTtl ()
 Returns the cache TTL (in seconds) for this source. More...
 
 getExpiryWeight ()
 Coefficient used in determining early expiration of cached settings to avoid stampedes. More...
 
 getHashKey ()
 Returns a deterministically computed key for use in caching settings from this source. More...
 
- Public Member Functions inherited from MediaWiki\Settings\Source\SettingsSource
 load ()
 Loads and returns all settings from this source as an associative array. More...
 

Detailed Description

A SettingsSource that can be cached.

It must return a unique (enough) and deterministic hash key for cache indexing.

Since
1.38
Todo:
mark as stable before the 1.38 release

Definition at line 14 of file CacheableSource.php.

Member Function Documentation

◆ allowsStaleLoad()

MediaWiki\Settings\Cache\CacheableSource::allowsStaleLoad ( )

Allow the caching layer to attempt to return stale results in the event that loading from the original source fails.

Note that allowing stale results will result in cache items being stored indefinitely regardless of the getExpiryTtl() value, and since there is currently no pruning of cache items, it is advised that sources allowing stale results also implement an immutable getHashKey() based only on constructor arguments.

Returns
bool

Implemented in MediaWiki\Settings\Source\FileSource, and MediaWiki\Settings\Source\EtcdSource.

◆ getExpiryTtl()

MediaWiki\Settings\Cache\CacheableSource::getExpiryTtl ( )

Returns the cache TTL (in seconds) for this source.

Returns
int

Implemented in MediaWiki\Settings\Source\FileSource, and MediaWiki\Settings\Source\EtcdSource.

◆ getExpiryWeight()

MediaWiki\Settings\Cache\CacheableSource::getExpiryWeight ( )

Coefficient used in determining early expiration of cached settings to avoid stampedes.

Increasing this value will cause the random early election to happen by a larger margin of lead time before normal expiry, relative to the cache value's generation duration. Conversely, returning a lesser value will narrow the margin of lead time, making the cache hold items for slightly longer but with more likelihood that concurrent regenerations and set overwrites will occur. Returning 0 will effectively disable early expiration, and by extension disable stampede mitigation altogether.

A greater value may be suitable if a source has a highly variable generation duration, but most implementations should simply return 1.0.

https://cseweb.ucsd.edu/~avattani/papers/cache_stampede.pdf Optimal Probabilistic Cache Stampede Prevention Vattani, A.; Chierichetti, F.; Lowenstein, K. (2015), "Optimal Probabilistic Cache Stampede Prevention" (PDF), Proceedings of the VLDB Endowment, VLDB, 8 (8): 886–897, doi:10.14778/2757807.2757813, ISSN 2150-8097 https://cseweb.ucsd.edu/~avattani/papers/cache_stampede.pdf float

Implemented in MediaWiki\Settings\Source\FileSource, and MediaWiki\Settings\Source\EtcdSource.

◆ getHashKey()

MediaWiki\Settings\Cache\CacheableSource::getHashKey ( )

Returns a deterministically computed key for use in caching settings from this source.

Returns
string

Implemented in MediaWiki\Settings\Source\FileSource, and MediaWiki\Settings\Source\EtcdSource.


The documentation for this interface was generated from the following file: