Output more MW version info in update.php
[lhc/web/wiklou.git] / includes / MergeHistory.php
index 0e9bb46..6bd4471 100644 (file)
@@ -32,7 +32,7 @@ use Wikimedia\Rdbms\IDatabase;
  */
 class MergeHistory {
 
-       /** @const int Maximum number of revisions that can be merged at once */
+       /** Maximum number of revisions that can be merged at once */
        const REVISION_LIMIT = 5000;
 
        /** @var Title Page from which history will be merged */
@@ -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;
        }
 }