Merge "Convert ForeignApiRepo::httpGetCached() to the WAN cache"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 27 Oct 2015 11:21:24 +0000 (11:21 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 27 Oct 2015 11:21:24 +0000 (11:21 +0000)
1  2 
includes/filerepo/ForeignAPIRepo.php

@@@ -329,7 -329,7 +329,7 @@@ class ForeignAPIRepo extends FileRepo 
         * @return bool|string
         */
        function getThumbUrlFromCache( $name, $width, $height, $params = "" ) {
 -              global $wgMemc;
 +              $cache = ObjectCache::getMainWANInstance();
                // We can't check the local cache using FileRepo functions because
                // we override fileExistsBatch(). We have to use the FileBackend directly.
                $backend = $this->getBackend(); // convenience
                $sizekey = "$width:$height:$params";
  
                /* Get the array of urls that we already know */
 -              $knownThumbUrls = $wgMemc->get( $key );
 +              $knownThumbUrls = $cache->get( $key );
                if ( !$knownThumbUrls ) {
                        /* No knownThumbUrls for this file */
                        $knownThumbUrls = array();
                        if ( $remoteModified < $modified && $diff < $this->fileCacheExpiry ) {
                                /* Use our current and already downloaded thumbnail */
                                $knownThumbUrls[$sizekey] = $localUrl;
 -                              $wgMemc->set( $key, $knownThumbUrls, $this->apiThumbCacheExpiry );
 +                              $cache->set( $key, $knownThumbUrls, $this->apiThumbCacheExpiry );
  
                                return $localUrl;
                        }
                        return $foreignUrl;
                }
                $knownThumbUrls[$sizekey] = $localUrl;
 -              $wgMemc->set( $key, $knownThumbUrls, $this->apiThumbCacheExpiry );
 +              $cache->set( $key, $knownThumbUrls, $this->apiThumbCacheExpiry );
                wfDebug( __METHOD__ . " got local thumb $localUrl, saving to cache \n" );
  
                return $localUrl;
                }
  
                if ( !isset( $this->mQueryCache[$url] ) ) {
-                       global $wgMemc;
-                       $key = $this->getLocalCacheKey( get_class( $this ), $target, md5( $url ) );
-                       $data = $wgMemc->get( $key );
-                       if ( !$data ) {
-                               $data = self::httpGet( $url );
-                               if ( !$data ) {
-                                       return null;
+                       $data = ObjectCache::getMainWANInstance()->getWithSetCallback(
+                               $this->getLocalCacheKey( get_class( $this ), $target, md5( $url ) ),
+                               $cacheTTL,
+                               function () use ( $url ) {
+                                       return ForeignAPIRepo::httpGet( $url );
                                }
+                       );
  
-                               $wgMemc->set( $key, $data, $cacheTTL );
+                       if ( !$data ) {
+                               return null;
                        }
  
                        if ( count( $this->mQueryCache ) > 100 ) {