jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/392906 )
Change subject: objectcache: improve touchCheckKey()/resetCheckKey() comments
......................................................................
objectcache: improve touchCheckKey()/resetCheckKey() comments
Change-Id: I91de1dff605adcf86e957bbf9e503fc4e5eed741
---
M includes/libs/objectcache/WANObjectCache.php
1 file changed, 18 insertions(+), 19 deletions(-)
Approvals:
Krinkle: Looks good to me, approved
jenkins-bot: Verified
diff --git a/includes/libs/objectcache/WANObjectCache.php
b/includes/libs/objectcache/WANObjectCache.php
index e63b32e..78a5dde 100644
--- a/includes/libs/objectcache/WANObjectCache.php
+++ b/includes/libs/objectcache/WANObjectCache.php
@@ -613,20 +613,22 @@
* on all keys that should be changed. When get() is called on those
* keys, the relevant "check" keys must be supplied for this to work.
*
- * The "check" key essentially represents a last-modified field.
- * When touched, the field will be updated on all cache servers.
- * Keys using it via get(), getMulti(), or getWithSetCallback() will
- * be invalidated. It is treated as being HOLDOFF_TTL seconds in the
future
- * by those methods to avoid race conditions where dependent keys get
updated
- * with stale values (e.g. from a DB replica DB).
+ * The "check" key essentially represents a last-modified time of an
entity.
+ * When the key is touched, the timestamp will be updated to the
current time.
+ * Keys using the "check" key via get(), getMulti(), or
getWithSetCallback() will
+ * be invalidated. The timestamp of "check" is treated as being
HOLDOFF_TTL seconds
+ * in the future by get*() methods in order to avoid race conditions
where keys are
+ * updated with stale values (e.g. from a DB replica DB).
*
- * This is typically useful for keys with hardcoded names or in some
cases
- * dynamically generated names where a low number of combinations exist.
- * When a few important keys get a large number of hits, a high cache
- * time is usually desired as well as "lockTSE" logic. The
resetCheckKey()
- * method is less appropriate in such cases since the "time since
expiry"
- * cannot be inferred, causing any get() after the reset to treat the
key
- * as being "hot", resulting in more stale value usage.
+ * This method is typically useful for keys with hardcoded names or in
some cases
+ * dynamically generated names, provided the number of such keys is
modest. It sets a
+ * high TTL on the "check" key, making it possible to know the
timestamp of the last
+ * change to the corresponding entities in most cases.
+ *
+ * When a few important keys get a large number of hits, a high cache
time is usually
+ * desired as well as "lockTSE" logic. The resetCheckKey() method is
less appropriate
+ * in such cases since the "time since expiry" cannot be inferred,
causing any get()
+ * after the reset to treat the key as being "hot", resulting in more
stale value usage.
*
* Note that "check" keys won't collide with other regular keys.
*
@@ -657,12 +659,9 @@
* to, any temporary ejection of that server will cause the
value to be
* seen as purged as a new server will initialize the "check"
key.
*
- * The advantage is that this does not place high TTL keys on every
cache
- * server, making it better for code that will cache many different keys
- * and either does not use lockTSE or uses a low enough TTL anyway.
- *
- * This is typically useful for keys with dynamically generated names
- * where a high number of combinations exist.
+ * The advantage here is that the "check" keys, which have high TTLs,
will only
+ * be created when a get*() method actually uses that key. This is
better when
+ * a large number of "check" keys are invalided in a short period of
time.
*
* Note that "check" keys won't collide with other regular keys.
*
--
To view, visit https://gerrit.wikimedia.org/r/392906
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I91de1dff605adcf86e957bbf9e503fc4e5eed741
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits