* (bug 27639) Transaction timeout when trying to OldLocalFile::upgradeRow()
authorSam Reed <reedy@users.mediawiki.org>
Mon, 11 Apr 2011 13:02:55 +0000 (13:02 +0000)
committerSam Reed <reedy@users.mediawiki.org>
Mon, 11 Apr 2011 13:02:55 +0000 (13:02 +0000)
RELEASE-NOTES
includes/filerepo/OldLocalFile.php

index c8ac687..2efe905 100644 (file)
@@ -238,6 +238,7 @@ PHP if you have not done so prior to upgrading MediaWiki.
 * (bug 28485) Block::purgeExpired Database returned error "1205: Lock wait timeout
   exceeded;"
 * (bug 20468) User::invalidateCache throws 1205: Lock wait timeout exceeded
+* (bug 27639) Transaction timeout when trying to OldLocalFile::upgradeRow()
 
  === API changes in 1.18 ===
 * (bug 26339) Throw warning when truncating an overlarge API result
index 16b4cd7..2b1cddd 100644 (file)
@@ -160,9 +160,13 @@ class OldLocalFile extends LocalFile {
                        return;
                }
 
-               $dbw = $this->repo->getMasterDB();
                list( $major, $minor ) = self::splitMime( $this->mime );
 
+               // https://bugzilla.wikimedia.org/show_bug.cgi?id=27639
+               // Create and use a new loadBalancer object, to prevent "1205: Lock wait timeout exceeded;"
+               $lb = wfGetLBFactory()->newMainLB();
+               $dbw = $lb->getConnection( DB_MASTER );
+
                wfDebug(__METHOD__.': upgrading '.$this->archive_name." to the current schema\n");
                $dbw->update( 'oldimage',
                        array(
@@ -179,6 +183,9 @@ class OldLocalFile extends LocalFile {
                                'oi_archive_name' => $this->archive_name ),
                        __METHOD__
                );
+
+               $lb->commitMasterChanges();
+               $lb->closeAll();
                wfProfileOut( __METHOD__ );
        }