Only attempt to deduplicate if there is data in archive and revision
authorKosta Harlan <kharlan@wikimedia.org>
Sun, 16 Jun 2019 23:00:52 +0000 (19:00 -0400)
committerKosta Harlan <kharlan@wikimedia.org>
Sun, 16 Jun 2019 23:00:52 +0000 (19:00 -0400)
The idea is to avoid expensive calls to makeDummyRevisionRow, and speed up
installation of MediaWiki on CI.

Bug: T225901
Change-Id: I6f69281568218c89eb18353c06cabf7eb1926de8

maintenance/deduplicateArchiveRevId.php
maintenance/populateArchiveRevId.php

index 2442caa..a1d4e99 100644 (file)
@@ -33,8 +33,13 @@ class DeduplicateArchiveRevId extends LoggedUpdateMaintenance {
 
        protected function doDBUpdates() {
                $this->output( "Deduplicating ar_rev_id...\n" );
-
                $dbw = $this->getDB( DB_MASTER );
+               // Sanity check. If this is a new install, we don't need to do anything here.
+               if ( PopulateArchiveRevId::isNewInstall( $dbw ) ) {
+                       $this->output( "New install, nothing to do here.\n" );
+                       return true;
+               }
+
                PopulateArchiveRevId::checkMysqlAutoIncrementBug( $dbw );
 
                $minId = $dbw->selectField( 'archive', 'MIN(ar_rev_id)', [], __METHOD__ );
index 96fcebf..c85e194 100644 (file)
@@ -43,6 +43,15 @@ class PopulateArchiveRevId extends LoggedUpdateMaintenance {
                $this->setBatchSize( 100 );
        }
 
+       /**
+        * @param IDatabase $dbw
+        * @return bool
+        */
+       public static function isNewInstall( IDatabase $dbw ) {
+               return $dbw->selectRowCount( 'archive' ) === 0 &&
+                       $dbw->selectRowCount( 'revision' ) === 1;
+       }
+
        protected function getUpdateKey() {
                return __CLASS__;
        }