Unstub the passed object when calling unstub()
[lhc/web/wiklou.git] / thumb.php
index d7bf453..c0042c2 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -367,7 +367,7 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
        global $wgMemc, $wgAttemptFailureEpoch;
 
        $key = wfMemcKey( 'attempt-failures', $wgAttemptFailureEpoch,
-               $file->getRepo()->getName(), md5( $file->getName() ), md5( $thumbName ) );
+               $file->getRepo()->getName(), $file->getSha1(), md5( $thumbName ) );
 
        // Check if this file keeps failing to render
        if ( $wgMemc->get( $key ) >= 4 ) {
@@ -387,9 +387,17 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
        $thumb = false;
        $errorHtml = false;
 
+       // guard thumbnail rendering with PoolCounter to avoid stampedes
+       // expensive files use a separate PoolCounter config so it is possible to set up a global limit on them
+       if ( $file->isExpensiveToThumbnail() ) {
+               $poolCounterType = 'FileRenderExpensive';
+       } else {
+               $poolCounterType = 'FileRender';
+       }
+
        // Thumbnail isn't already there, so create the new thumbnail...
        try {
-               $work = new PoolCounterWorkViaCallback( 'FileRender', sha1( $file->getName() ),
+               $work = new PoolCounterWorkViaCallback( $poolCounterType, sha1( $file->getName() ),
                        array(
                                'doWork' => function() use ( $file, $params ) {
                                        return $file->transform( $params, File::RENDER_NOW );