jenkins-bot has submitted this change and it was merged.

Change subject: Made RepoGroup use ProcessCacheLRU
......................................................................


Made RepoGroup use ProcessCacheLRU

Change-Id: I322a6cf15566bde4fc5ee5bfa1be5fdc680cd763
---
M includes/cache/MapCacheLRU.php
M includes/filerepo/RepoGroup.php
2 files changed, 8 insertions(+), 39 deletions(-)

Approvals:
  BryanDavis: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/includes/cache/MapCacheLRU.php b/includes/cache/MapCacheLRU.php
index 3539d8f..26d3ec4 100644
--- a/includes/cache/MapCacheLRU.php
+++ b/includes/cache/MapCacheLRU.php
@@ -28,6 +28,7 @@
  *
  * @see ProcessCacheLRU
  * @ingroup Cache
+ * @since 1.23
  */
 class MapCacheLRU {
        /** @var Array */
diff --git a/includes/filerepo/RepoGroup.php b/includes/filerepo/RepoGroup.php
index 1a7ae34..039f435 100644
--- a/includes/filerepo/RepoGroup.php
+++ b/includes/filerepo/RepoGroup.php
@@ -38,7 +38,7 @@
        protected $localInfo;
        protected $foreignInfo;
 
-       /** @var array  */
+       /** @var ProcessCacheLRU  */
        protected $cache;
 
        /** @var RepoGroup */
@@ -94,7 +94,7 @@
        function __construct( $localInfo, $foreignInfo ) {
                $this->localInfo = $localInfo;
                $this->foreignInfo = $foreignInfo;
-               $this->cache = array();
+               $this->cache = new ProcessCacheLRU( self::MAX_CACHE_SIZE );
        }
 
        /**
@@ -136,13 +136,8 @@
                ) {
                        $time = isset( $options['time'] ) ? $options['time'] : 
'';
                        $dbkey = $title->getDBkey();
-                       if ( isset( $this->cache[$dbkey][$time] ) ) {
-                               wfDebug( __METHOD__ . ": got File:$dbkey from 
process cache\n" );
-                               # Move it to the end of the list so that we can 
delete the LRU entry later
-                               $this->pingCache( $dbkey );
-
-                               # Return the entry
-                               return $this->cache[$dbkey][$time];
+                       if ( $this->cache->has( $dbkey, $time, 60 ) ) {
+                               return $this->cache->get( $dbkey, $time );
                        }
                        $useCache = true;
                } else {
@@ -165,8 +160,7 @@
                $image = $image ? $image : false; // type sanity
                # Cache file existence or non-existence
                if ( $useCache && ( !$image || $image->isCacheable() ) ) {
-                       $this->trimCache();
-                       $this->cache[$dbkey][$time] = $image;
+                       $this->cache->set( $dbkey, $time, $image );
                }
 
                return $image;
@@ -435,40 +429,14 @@
        }
 
        /**
-        * Move a cache entry to the top (such as when accessed)
-        */
-       protected function pingCache( $key ) {
-               if ( isset( $this->cache[$key] ) ) {
-                       $tmp = $this->cache[$key];
-                       unset( $this->cache[$key] );
-                       $this->cache[$key] = $tmp;
-               }
-       }
-
-       /**
-        * Limit cache memory
-        */
-       protected function trimCache() {
-               while ( count( $this->cache ) >= self::MAX_CACHE_SIZE ) {
-                       reset( $this->cache );
-                       $key = key( $this->cache );
-                       wfDebug( __METHOD__ . ": evicting $key\n" );
-                       unset( $this->cache[$key] );
-               }
-       }
-
-       /**
         * Clear RepoGroup process cache used for finding a file
         * @param $title Title|null Title of the file or null to clear all files
         */
        public function clearCache( Title $title = null ) {
                if ( $title == null ) {
-                       $this->cache = array();
+                       $this->cache->clear();
                } else {
-                       $dbKey = $title->getDBkey();
-                       if ( isset( $this->cache[$dbKey] ) ) {
-                               unset( $this->cache[$dbKey] );
-                       }
+                       $this->cache->clear( $title->getDBkey() );
                }
        }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/98899
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I322a6cf15566bde4fc5ee5bfa1be5fdc680cd763
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <asch...@wikimedia.org>
Gerrit-Reviewer: Brian Wolff <bawolff...@gmail.com>
Gerrit-Reviewer: BryanDavis <bda...@wikimedia.org>
Gerrit-Reviewer: IAlex <coderev...@emsenhuber.ch>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to