X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;ds=sidebyside;f=includes%2Ffilerepo%2FLocalRepo.php;h=49c2b8fa0e3e58f4856387fc378ee19db239b99c;hb=bc967dd32e3841c72ae06907ed49a37af5dc9311;hp=549be40807cbc14bcf96afc447a6c79bc5a35129;hpb=bea7a64218b960614aea8284aea597ecf2f02bdf;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/filerepo/LocalRepo.php b/includes/filerepo/LocalRepo.php index 549be40807..49c2b8fa0e 100644 --- a/includes/filerepo/LocalRepo.php +++ b/includes/filerepo/LocalRepo.php @@ -29,12 +29,12 @@ * @ingroup FileRepo */ class LocalRepo extends FileRepo { - var $fileFactory = array( 'LocalFile' , 'newFromTitle' ); - var $fileFactoryKey = array( 'LocalFile' , 'newFromKey' ); - var $fileFromRowFactory = array( 'LocalFile' , 'newFromRow' ); - var $oldFileFactory = array( 'OldLocalFile', 'newFromTitle' ); - var $oldFileFactoryKey = array( 'OldLocalFile', 'newFromKey' ); - var $oldFileFromRowFactory = array( 'OldLocalFile', 'newFromRow' ); + var $fileFactory = array( 'LocalFile', 'newFromTitle' ); + var $fileFactoryKey = array( 'LocalFile', 'newFromKey' ); + var $fileFromRowFactory = array( 'LocalFile', 'newFromRow' ); + var $oldFileFactory = array( 'OldLocalFile', 'newFromTitle' ); + var $oldFileFactoryKey = array( 'OldLocalFile', 'newFromKey' ); + var $oldFileFromRowFactory = array( 'OldLocalFile', 'newFromRow' ); /** * @throws MWException @@ -97,6 +97,7 @@ class LocalRepo extends FileRepo { } $dbw->commit( __METHOD__ ); } + return $status; } @@ -111,6 +112,7 @@ class LocalRepo extends FileRepo { $options = ( $lock === 'lock' ) ? array( 'FOR UPDATE' ) : array(); $dbw = $this->getMasterDB(); + return (bool)$dbw->selectField( 'filearchive', '1', array( 'fa_storage_group' => 'deleted', 'fa_storage_key' => $key ), __METHOD__, $options @@ -131,6 +133,7 @@ class LocalRepo extends FileRepo { $ext = File::normalizeExtension( substr( $key, strcspn( $key, '.' ) + 1 ) ); $dbw = $this->getMasterDB(); + return (bool)$dbw->selectField( 'oldimage', '1', array( 'oi_sha1' => $sha1, 'oi_archive_name ' . $dbw->buildLike( $dbw->anyString(), ".$ext" ), @@ -171,13 +174,14 @@ class LocalRepo extends FileRepo { if ( $cachedValue === ' ' || $cachedValue === '' ) { // Does not exist return false; - } elseif ( strval( $cachedValue ) !== '' ) { + } elseif ( strval( $cachedValue ) !== '' && $cachedValue !== ' PURGED' ) { return Title::newFromText( $cachedValue, NS_FILE ); } // else $cachedValue is false or null: cache miss $id = $this->getArticleID( $title ); if ( !$id ) { - $wgMemc->set( $memcKey, " ", $expiry ); + $wgMemc->add( $memcKey, " ", $expiry ); + return false; } $dbr = $this->getSlaveDB(); @@ -190,10 +194,12 @@ class LocalRepo extends FileRepo { if ( $row && $row->rd_namespace == NS_FILE ) { $targetTitle = Title::makeTitle( $row->rd_namespace, $row->rd_title ); - $wgMemc->set( $memcKey, $targetTitle->getDBkey(), $expiry ); + $wgMemc->add( $memcKey, $targetTitle->getDBkey(), $expiry ); + return $targetTitle; } else { - $wgMemc->set( $memcKey, '', $expiry ); + $wgMemc->add( $memcKey, '', $expiry ); + return false; } } @@ -219,6 +225,7 @@ class LocalRepo extends FileRepo { ), __METHOD__ //Function name ); + return $id; } @@ -299,13 +306,14 @@ class LocalRepo extends FileRepo { 'img_name ' . $dbr->buildLike( $prefix, $dbr->anyString() ), __METHOD__, $selectOptions - ); + ); // Build file objects $files = array(); foreach ( $res as $row ) { $files[] = $this->newFileFromRow( $row ); } + return $files; } @@ -334,6 +342,7 @@ class LocalRepo extends FileRepo { */ function getSharedCacheKey( /*...*/ ) { $args = func_get_args(); + return call_user_func_array( 'wfMemcKey', $args ); } @@ -347,7 +356,11 @@ class LocalRepo extends FileRepo { global $wgMemc; $memcKey = $this->getSharedCacheKey( 'image_redirect', md5( $title->getDBkey() ) ); if ( $memcKey ) { - $wgMemc->delete( $memcKey ); + // Set a temporary value for the cache key, to ensure + // that this value stays purged long enough so that + // it isn't refreshed with a stale value due to a + // lagged slave. + $wgMemc->set( $memcKey, ' PURGED', 12 ); } } }