X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialRunJobs.php;h=ce5533fbf0133dd15d57065bfa31ff4b46d10053;hb=3eebaaffcf25c3779725309570de924ad5bea766;hp=42175537646bc5ab77850c3fdace978c5da1a66a;hpb=6da98ee84b844c9fba0d6c7fa76d8fc50bf2abbc;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialRunJobs.php b/includes/specials/SpecialRunJobs.php index 4217553764..ce5533fbf0 100644 --- a/includes/specials/SpecialRunJobs.php +++ b/includes/specials/SpecialRunJobs.php @@ -34,6 +34,10 @@ class SpecialRunJobs extends UnlistedSpecialPage { parent::__construct( 'RunJobs' ); } + public function doesWrites() { + return true; + } + public function execute( $par = '' ) { $this->getOutput()->disable(); @@ -49,8 +53,8 @@ class SpecialRunJobs extends UnlistedSpecialPage { return; } - $optional = array( 'maxjobs' => 0, 'maxtime' => 30, 'type' => false, 'async' => true ); - $required = array_flip( array( 'title', 'tasks', 'signature', 'sigexpiry' ) ); + $optional = [ 'maxjobs' => 0, 'maxtime' => 30, 'type' => false, 'async' => true ]; + $required = array_flip( [ 'title', 'tasks', 'signature', 'sigexpiry' ] ); $params = array_intersect_key( $this->getRequest()->getValues(), $required + $optional ); $missing = array_diff_key( $required, $params ); @@ -90,19 +94,22 @@ class SpecialRunJobs extends UnlistedSpecialPage { if ( strpos( $errstr, 'Cannot modify header information' ) !== false ) { return true; // bug T115413 } - // Delegate unhandled errors to the default handlers - return false; + // Delegate unhandled errors to the default MediaWiki handler + // so that fatal errors get proper logging (T89169) + return call_user_func_array( + 'MWExceptionHandler::handleError', func_get_args() + ); } ); } // Do all of the specified tasks... if ( in_array( 'jobs', explode( '|', $params['tasks'] ) ) ) { $runner = new JobRunner( LoggerFactory::getInstance( 'runJobs' ) ); - $response = $runner->run( array( + $response = $runner->run( [ 'type' => $params['type'], 'maxJobs' => $params['maxjobs'] ? $params['maxjobs'] : 1, 'maxTime' => $params['maxtime'] ? $params['maxjobs'] : 30 - ) ); + ] ); if ( !$params['async'] ) { print FormatJson::encode( $response, true ); }