Converted Interwiki using WAN cache
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 29 Apr 2015 22:03:09 +0000 (15:03 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Thu, 30 Apr 2015 01:33:22 +0000 (01:33 +0000)
* Added an invalidateCache() method for the Interwiki extension

Bug: T93141
Change-Id: Id4f8b6fb9bfe26f6b5e5ce32e4e55d51eb37964d

includes/interwiki/Interwiki.php

index 02fbb08..33e5066 100644 (file)
@@ -114,6 +114,17 @@ class Interwiki {
                return $iw;
        }
 
+       /**
+        * Purge the cache for an interwiki prefix
+        * @param string $prefix
+        * @since 1.26
+        */
+       public static function invalidateCache( $prefix ) {
+               $cache = ObjectCache::getMainWANInstance();
+               $key = wfMemcKey( 'interwiki', $prefix );
+               $cache->delete( $key );
+       }
+
        /**
         * Fetch interwiki prefix data from local cache in constant database.
         *
@@ -191,16 +202,18 @@ class Interwiki {
         * @return Interwiki|bool Interwiki if $prefix is valid, otherwise false
         */
        protected static function load( $prefix ) {
-               global $wgMemc, $wgInterwikiExpiry;
+               global $wgInterwikiExpiry;
 
                $iwData = array();
                if ( !Hooks::run( 'InterwikiLoadPrefix', array( $prefix, &$iwData ) ) ) {
                        return Interwiki::loadFromArray( $iwData );
                }
 
+               $cache = ObjectCache::getMainWANInstance();
+
                if ( !$iwData ) {
                        $key = wfMemcKey( 'interwiki', $prefix );
-                       $iwData = $wgMemc->get( $key );
+                       $iwData = $cache->get( $key );
                        if ( $iwData === '!NONEXISTENT' ) {
                                // negative cache hit
                                return false;
@@ -232,13 +245,13 @@ class Interwiki {
                                'iw_local' => $iw->mLocal,
                                'iw_trans' => $iw->mTrans
                        );
-                       $wgMemc->add( $key, $mc, $wgInterwikiExpiry );
+                       $cache->set( $key, $mc, $wgInterwikiExpiry );
 
                        return $iw;
                }
 
                // negative cache hit
-               $wgMemc->add( $key, '!NONEXISTENT', $wgInterwikiExpiry );
+               $cache->set( $key, '!NONEXISTENT', $wgInterwikiExpiry );
 
                return false;
        }