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
wfDebug( __METHOD__ . ": hitting url {$thumbUrl}\n" );
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,
$request = MWHttpRequest::factory( $thumbUrl,
- [ 'method' => 'HEAD', 'followRedirects' => true ],
+ [ 'method' => 'HEAD', 'followRedirects' => true, 'timeout' => 1 ],
return true;
} elseif ( $statusCode ) {
$this->setLastError( __METHOD__ . ": incorrect HTTP status $statusCode when hitting $thumbUrl" );
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' ) );
} else {
$this->setLastError( __METHOD__ . ': HTTP request failure: '
. Status::wrap( $status )->getWikiText( null, null, 'en' ) );