* (bug 2789) memcached image metadata now cleared after deletion
authorBrion Vibber <brion@users.mediawiki.org>
Sun, 10 Jul 2005 23:46:37 +0000 (23:46 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Sun, 10 Jul 2005 23:46:37 +0000 (23:46 +0000)
RELEASE-NOTES
includes/Image.php

index ba9f7df..e03b3eb 100644 (file)
@@ -556,6 +556,8 @@ of MediaWiki:Newpagetext) to &action=edit, if page is new.
 * Cleaned up email notification message formatting
 * Finally fixed Special:Disambiguations that was broke since SCHEMA_WORK
 * (bug 2761) fix capitalization of "i" in Turkish
+* (bug 2789) memcached image metadata now cleared after deletion
+
 
 === Caveats ===
 
index edb2418..01222e2 100644 (file)
@@ -173,11 +173,11 @@ class Image
        function saveToCache() {
                global $wgMemc;
                $this->load();
-               // We can't cache metadata for non-existent files, because if the file later appears 
-               // in commons, the local keys won't be purged.
+               $keys = $this->getCacheKeys();
                if ( $this->fileExists ) {
-                       $keys = $this->getCacheKeys();
-               
+                       // We can't cache negative metadata for non-existent files,
+                       // because if the file later appears in commons, the local
+                       // keys won't be purged.
                        $cachedValues = array('name' => $this->name,
                                                                  'imagePath' => $this->imagePath,
                                                                  'fileExists' => $this->fileExists,
@@ -191,6 +191,10 @@ class Image
                                                                  'size' => $this->size);
 
                        $wgMemc->set( $keys[0], $cachedValues );
+               } else {
+                       // However we should clear them, so they aren't leftover
+                       // if we've deleted the file.
+                       $wgMemc->delete( $keys[0] );
                }
        }