Make $wgRevisionCacheExpiry default to one week
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 7 Sep 2016 21:19:31 +0000 (14:19 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Fri, 9 Sep 2016 02:56:24 +0000 (19:56 -0700)
* If CACHE_DB is used, it will not use the cache however.
* If persistent cache is disabled, at least maintain the
  process caching.

Change-Id: I23b455ef46f27c313bb9573f69723b1436b2d584

RELEASE-NOTES-1.28
includes/DefaultSettings.php
includes/Revision.php

index 9843d90..bd05309 100644 (file)
@@ -32,6 +32,7 @@ production.
 * The 'editcontentmodel' permission is now granted to all logged-in users ('user').
   instead of just administrators ('sysop'). Documentation for this feature is
   available at <https://www.mediawiki.org/wiki/Help:ChangeContentModel>.
+* $wgRevisionCacheExpiry is now set to one week by default instead of being disabled.
 
 === New features in 1.28 ===
 * User::isBot() method for checking if an account is a bot role account.
index 3bf8381..03947f6 100644 (file)
@@ -2123,7 +2123,7 @@ $wgDefaultExternalStore = false;
  *
  * Set to 0 to disable, or number of seconds before cache expiry.
  */
-$wgRevisionCacheExpiry = 0;
+$wgRevisionCacheExpiry = 86400 * 7;
 
 /** @} */ # end text storage }
 
index ef0f03d..af45acc 100644 (file)
@@ -1577,19 +1577,20 @@ class Revision implements IDBAccessObject {
         * @return string|bool The revision's text, or false on failure
         */
        private function loadText() {
-               // Caching may be beneficial for massive use of external storage
                global $wgRevisionCacheExpiry;
 
-               if ( !$wgRevisionCacheExpiry ) {
-                       return $this->fetchText();
-               }
-
                $cache = ObjectCache::getMainWANInstance();
+               if ( $cache->getQoS( $cache::ATTR_EMULATION ) <= $cache::QOS_EMULATION_SQL ) {
+                       // Do not cache RDBMs blobs in...the RDBMs store
+                       $ttl = $cache::TTL_UNCACHEABLE;
+               } else {
+                       $ttl = $wgRevisionCacheExpiry ?: $cache::TTL_UNCACHEABLE;
+               }
 
                // No negative caching; negative hits on text rows may be due to corrupted replica DBs
                return $cache->getWithSetCallback(
-                       $key = $cache->makeKey( 'revisiontext', 'textid', $this->getTextId() ),
-                       $wgRevisionCacheExpiry,
+                       $cache->makeKey( 'revisiontext', 'textid', $this->getTextId() ),
+                       $ttl,
                        function () {
                                return $this->fetchText();
                        },