From 2954003a95ae55566f63c532e5327e01e9127bd9 Mon Sep 17 00:00:00 2001 From: Gilles Dubuc Date: Mon, 3 Sep 2018 11:09:08 +0200 Subject: [PATCH] Don't wait for thumbnails that take long to render The prerendering job is an optimization, should thumbnails fail to prerender, they will be reattempted when a user views them again. Bug: T203135 Change-Id: I2907bf10a2d22af9beffc530856f458a6adbfe45 --- includes/jobqueue/jobs/ThumbnailRenderJob.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/includes/jobqueue/jobs/ThumbnailRenderJob.php b/includes/jobqueue/jobs/ThumbnailRenderJob.php index 49eabbba25..f87a33691d 100644 --- a/includes/jobqueue/jobs/ThumbnailRenderJob.php +++ b/includes/jobqueue/jobs/ThumbnailRenderJob.php @@ -103,8 +103,10 @@ class ThumbnailRenderJob extends Job { wfDebug( __METHOD__ . ": hitting url {$thumbUrl}\n" ); + // T203135 We don't wait for the request to complete, as this is mostly fire & forget. + // Looking at the HTTP status of requests that take less than 1s is a sanity check. $request = MWHttpRequest::factory( $thumbUrl, - [ 'method' => 'HEAD', 'followRedirects' => true ], + [ 'method' => 'HEAD', 'followRedirects' => true, 'timeout' => 1 ], __METHOD__ ); @@ -122,6 +124,10 @@ class ThumbnailRenderJob extends Job { return true; } elseif ( $statusCode ) { $this->setLastError( __METHOD__ . ": incorrect HTTP status $statusCode when hitting $thumbUrl" ); + } elseif ( $status->hasMessage( 'http-timed-out' ) ) { + // T203135 we ignore timeouts, as it would be inefficient for this job to wait for + // minutes for the slower thumbnails to complete. + return true; } else { $this->setLastError( __METHOD__ . ': HTTP request failure: ' . Status::wrap( $status )->getWikiText( null, null, 'en' ) ); -- 2.20.1