This variable has never been set to anything other than the default value of
24 hours as introduced in 2003 (r2203, r2204; or
036ff960ce,
edf6b38626).
The variable has never changed in core, it's not overridden at WMF,
and MessageCache is not constructed anywhere other than ServiceWiring.php
anywhere in repos on Wikimedia Gerrit, indexed by MediaWiki Codesearch,
or any GitHub-hosted repository (incl Wikia repos and WikiHow mirrors).
I've also checked all GitHub-hosted repos for boilerplates and/or public
settings files from devs or prod, and couldn't find any example of
this being overridden (after filtering out copies of the core files
themselves). Rather than having to support potentially hard-to-predict
interactions betweeen caching layers by checking its state, make it
a constant so we can code reason about it more easily.
Change-Id: Ie2e139001aae3ac54b509d94a3d917bb408eaca0
* $wgDebugPrintHttpHeaders - The default of including HTTP headers in the
debug log channel is no longer configurable. The debug log itself remains
configurable via $wgDebugLogFile.
* $wgDebugPrintHttpHeaders - The default of including HTTP headers in the
debug log channel is no longer configurable. The debug log itself remains
configurable via $wgDebugLogFile.
+* $wgMsgCacheExpiry - The MessageCache uses 24 hours as the expiry for values
+ stored in WANObjectCache. This is no longer configurable.
* $wgPasswordSalt – This setting, used for migrating exceptionally old, insecure
password setups and deprecated since 1.24, is now removed.
* $wgDBOracleDRCP - If you must use persistent connections, set DBO_PERSISTENT
* $wgPasswordSalt – This setting, used for migrating exceptionally old, insecure
password setups and deprecated since 1.24, is now removed.
* $wgDBOracleDRCP - If you must use persistent connections, set DBO_PERSISTENT
cleared by: Language::loadLocalisation()
Message Cache:
cleared by: Language::loadLocalisation()
Message Cache:
- backend: $wgMessageCacheType
- key: $wgDBname:messages, $wgDBname:messages-hash, $wgDBname:messages-status
- ex: wikidb:messages, wikidb:messages-hash, wikidb:messages-status
- stores: an array where the keys are DB keys and the values are messages
- set in: wfMessage(), Article::editUpdates() and Title::moveTo()
- expiry: $wgMsgCacheExpiry
- cleared by: nothing
Newtalk:
key: $wgDBname:newtalk:ip:$ip
Newtalk:
key: $wgDBname:newtalk:ip:$ip
*/
$wgUseDatabaseMessages = true;
*/
$wgUseDatabaseMessages = true;
-/**
- * Expiry time for the message cache key, in seconds.
- *
- * @var int Defaults to 24 hours.
- */
-$wgMsgCacheExpiry = 86400;
-
/**
* Maximum entry size in the message cache, in bytes
*/
/**
* Maximum entry size in the message cache, in bytes
*/
? $services->getLocalServerObjectCache()
: new EmptyBagOStuff(),
$mainConfig->get( 'UseDatabaseMessages' ),
? $services->getLocalServerObjectCache()
: new EmptyBagOStuff(),
$mainConfig->get( 'UseDatabaseMessages' ),
- $mainConfig->get( 'MsgCacheExpiry' ),
$services->getContentLanguage()
);
},
$services->getContentLanguage()
);
},
/** How long memcached locks last */
const LOCK_TTL = 30;
/** How long memcached locks last */
const LOCK_TTL = 30;
+ /**
+ * Lifetime for cache, for keys stored in $wanCache, in seconds.
+ * @var int
+ */
+ const WAN_TTL = IExpiringStore::TTL_DAY;
+
/**
* Process cache of loaded messages that are defined in MediaWiki namespace
*
/**
* Process cache of loaded messages that are defined in MediaWiki namespace
*
- /**
- * Lifetime for cache, used by object caching.
- * Set on construction, see __construct().
- */
- protected $mExpiry;
-
/**
* Message cache has its own parser which it uses to transform messages
* @var ParserOptions
/**
* Message cache has its own parser which it uses to transform messages
* @var ParserOptions
* @param BagOStuff $clusterCache
* @param BagOStuff $serverCache
* @param bool $useDB Whether to look for message overrides (e.g. MediaWiki: pages)
* @param BagOStuff $clusterCache
* @param BagOStuff $serverCache
* @param bool $useDB Whether to look for message overrides (e.g. MediaWiki: pages)
- * @param int $expiry Lifetime for cache. @see $mExpiry.
* @param Language|null $contLang Content language of site
*/
public function __construct(
* @param Language|null $contLang Content language of site
*/
public function __construct(
BagOStuff $clusterCache,
BagOStuff $serverCache,
$useDB,
BagOStuff $clusterCache,
BagOStuff $serverCache,
$useDB,
Language $contLang = null
) {
$this->wanCache = $wanCache;
Language $contLang = null
) {
$this->wanCache = $wanCache;
$this->cache = new MapCacheLRU( 5 ); // limit size for sanity
$this->mDisable = !$useDB;
$this->cache = new MapCacheLRU( 5 ); // limit size for sanity
$this->mDisable = !$useDB;
- $this->mExpiry = $expiry;
$this->contLang = $contLang ?? MediaWikiServices::getInstance()->getContentLanguage();
}
$this->contLang = $contLang ?? MediaWikiServices::getInstance()->getContentLanguage();
}
# messages larger than $wgMaxMsgCacheEntrySize, since those are only
# stored and fetched from memcache.
$cache['HASH'] = md5( serialize( $cache ) );
# messages larger than $wgMaxMsgCacheEntrySize, since those are only
# stored and fetched from memcache.
$cache['HASH'] = md5( serialize( $cache ) );
- $cache['EXPIRY'] = wfTimestamp( TS_MW, time() + $this->mExpiry );
+ $cache['EXPIRY'] = wfTimestamp( TS_MW, time() + self::WAN_TTL );
unset( $cache['EXCESSIVE'] ); // only needed for hash
return $cache;
unset( $cache['EXCESSIVE'] ); // only needed for hash
return $cache;
$this->wanCache->set(
$this->bigMessageCacheKey( $cache['HASH'], $title ),
' ' . $newTextByTitle[$title],
$this->wanCache->set(
$this->bigMessageCacheKey( $cache['HASH'], $title ),
' ' . $newTextByTitle[$title],
);
}
// Mark this cache as definitely being "latest" (non-volatile) so
);
}
// Mark this cache as definitely being "latest" (non-volatile) so
function () use ( $code, $dbKey, $hash, $fname ) {
return $this->wanCache->getWithSetCallback(
$this->bigMessageCacheKey( $hash, $dbKey ),
function () use ( $code, $dbKey, $hash, $fname ) {
return $this->wanCache->getWithSetCallback(
$this->bigMessageCacheKey( $hash, $dbKey ),
function ( $oldValue, &$ttl, &$setOpts ) use ( $dbKey, $code, $fname ) {
// Try loading the message from the database
$dbr = wfGetDB( DB_REPLICA );
function ( $oldValue, &$ttl, &$setOpts ) use ( $dbKey, $code, $fname ) {
// Try loading the message from the database
$dbr = wfGetDB( DB_REPLICA );