X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fdeferred%2FDeferredUpdates.php;h=42816ddcb587f0f0024a5d3c8705cb52796e82fc;hb=df5ef8b5d78d060bb41661a65284a3dccc49ac87;hp=2178281c17fa9a713456cc6785b67e5adc5b8955;hpb=ec9002258c8a0264cb2d92df6a216e9fa11d3462;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/deferred/DeferredUpdates.php b/includes/deferred/DeferredUpdates.php index 2178281c17..42816ddcb5 100644 --- a/includes/deferred/DeferredUpdates.php +++ b/includes/deferred/DeferredUpdates.php @@ -82,13 +82,10 @@ class DeferredUpdates { public static function doUpdates( $commit = '' ) { global $wgDeferredUpdateList; - wfProfileIn( __METHOD__ ); - $updates = array_merge( $wgDeferredUpdateList, self::$updates ); // No need to get master connections in case of empty updates array if ( !count( $updates ) ) { - wfProfileOut( __METHOD__ ); return; } @@ -99,26 +96,29 @@ class DeferredUpdates { $dbw = wfGetDB( DB_MASTER ); } - /** @var DeferrableUpdate $update */ - foreach ( $updates as $update ) { - try { - $update->doUpdate(); + while ( $updates ) { + self::clearPendingUpdates(); - if ( $doCommit && $dbw->trxLevel() ) { - $dbw->commit( __METHOD__, 'flush' ); - } - } catch ( MWException $e ) { - // We don't want exceptions thrown during deferred updates to - // be reported to the user since the output is already sent. - // Instead we just log them. - if ( !$e instanceof ErrorPageError ) { - MWExceptionHandler::logException( $e ); + /** @var DeferrableUpdate $update */ + foreach ( $updates as $update ) { + try { + $update->doUpdate(); + + if ( $doCommit && $dbw->trxLevel() ) { + $dbw->commit( __METHOD__, 'flush' ); + } + } catch ( Exception $e ) { + // We don't want exceptions thrown during deferred updates to + // be reported to the user since the output is already sent. + // Instead we just log them. + if ( !$e instanceof ErrorPageError ) { + MWExceptionHandler::logException( $e ); + } } } + $updates = array_merge( $wgDeferredUpdateList, self::$updates ); } - self::clearPendingUpdates(); - wfProfileOut( __METHOD__ ); } /**