X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FMergeHistory.php;h=0914a9b7d8deb2f24bf413ce1a8a552bf18cb2dd;hb=853a291903dc6d21c3d1e92400c2d205a5537958;hp=0e9bb4673d9ded071fc3b066fcd396f30652d749;hpb=16ef3e79c4c52aa6b74563b7eadcfc9792e7a4c4;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/MergeHistory.php b/includes/MergeHistory.php index 0e9bb4673d..0914a9b7d8 100644 --- a/includes/MergeHistory.php +++ b/includes/MergeHistory.php @@ -167,7 +167,7 @@ class MergeHistory { // Convert into a Status object if ( $errors ) { foreach ( $errors as $error ) { - call_user_func_array( [ $status, 'fatal' ], $error ); + $status->fatal( ...$error ); } } @@ -254,6 +254,8 @@ class MergeHistory { return $permCheck; } + $this->dbw->startAtomic( __METHOD__ ); + $this->dbw->update( 'revision', [ 'rev_page' => $this->dest->getArticleID() ], @@ -264,17 +266,17 @@ class MergeHistory { // Check if this did anything $this->revisionsMerged = $this->dbw->affectedRows(); if ( $this->revisionsMerged < 1 ) { + $this->dbw->endAtomic( __METHOD__ ); $status->fatal( 'mergehistory-fail-no-change' ); + return $status; } // Make the source page a redirect if no revisions are left - $haveRevisions = $this->dbw->selectField( + $haveRevisions = $this->dbw->lockForUpdate( 'revision', - 'rev_timestamp', [ 'rev_page' => $this->source->getArticleID() ], - __METHOD__, - [ 'FOR UPDATE' ] + __METHOD__ ); if ( !$haveRevisions ) { if ( $reason ) { @@ -350,6 +352,8 @@ class MergeHistory { Hooks::run( 'ArticleMergeComplete', [ $this->source, $this->dest ] ); + $this->dbw->endAtomic( __METHOD__ ); + return $status; } }