From: Aaron Schulz Date: Mon, 5 Oct 2015 04:45:25 +0000 (-0700) Subject: Cleanups to MigrateFileRepoLayout X-Git-Tag: 1.31.0-rc.0~9544^2 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/operations/?a=commitdiff_plain;h=b4ff14f73026e38ae486dfd80f271d565204dbfb;p=lhc%2Fweb%2Fwiklou.git Cleanups to MigrateFileRepoLayout * Use "bypassReadOnly" as other file backend maintenance scripts do. One may want to run this while site traffic is off via $wgReadOnly. * Fixed handling for when img_sha1 is not set. * Fixed some IDEA errors. Change-Id: I95c426c5f2082576fc9ea40282d2869750a9f3d8 --- diff --git a/includes/Status.php b/includes/Status.php index 28af7f539f..752cc5dc06 100644 --- a/includes/Status.php +++ b/includes/Status.php @@ -361,7 +361,7 @@ class Status { * * @note: this handles RawMessage poorly * - * @param string $type + * @param string|bool $type * @return array */ protected function getStatusArray( $type = false ) { diff --git a/includes/filerepo/file/File.php b/includes/filerepo/file/File.php index cde5e6afde..9a7c21cae9 100644 --- a/includes/filerepo/file/File.php +++ b/includes/filerepo/file/File.php @@ -1444,7 +1444,7 @@ abstract class File implements IDBAccessObject { * @param string $end Only revisions newer than $end will be returned * @param bool $inc Include the endpoints of the time range * - * @return array + * @return File[] */ function getHistory( $limit = null, $start = null, $end = null, $inc = true ) { return array(); diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index d1467084fe..0092e17370 100644 --- a/includes/filerepo/file/LocalFile.php +++ b/includes/filerepo/file/LocalFile.php @@ -986,7 +986,7 @@ class LocalFile extends File { * @param int $start Optional: Timestamp, start from * @param int $end Optional: Timestamp, end at * @param bool $inc - * @return array + * @return OldLocalFile[] */ function getHistory( $limit = null, $start = null, $end = null, $inc = true ) { $dbr = $this->repo->getSlaveDB(); diff --git a/maintenance/migrateFileRepoLayout.php b/maintenance/migrateFileRepoLayout.php index 78587ce543..68b97e30d8 100644 --- a/maintenance/migrateFileRepoLayout.php +++ b/maintenance/migrateFileRepoLayout.php @@ -72,7 +72,8 @@ class MigrateFileRepoLayout extends Maintenance { $batch = array(); $lastName = ''; do { - $res = $dbw->select( 'image', array( 'img_name', 'img_sha1' ), + $res = $dbw->select( 'image', + array( 'img_name', 'img_sha1' ), array_merge( array( 'img_name > ' . $dbw->addQuotes( $lastName ) ), $conds ), __METHOD__, array( 'LIMIT' => $this->mBatchSize, 'ORDER BY' => 'img_name' ) @@ -80,12 +81,14 @@ class MigrateFileRepoLayout extends Maintenance { foreach ( $res as $row ) { $lastName = $row->img_name; - $sha1 = $row->img_sha1; + /** @var LocalFile $file */ + $file = $repo->newFile( $row->img_name ); + // Check in case SHA1 rows are not populated for some files + $sha1 = strlen( $row->img_sha1 ) ? $row->img_sha1 : $file->getSha1(); + if ( !strlen( $sha1 ) ) { - $this->error( "Image SHA-1 not set for {$row->img_name}." ); + $this->error( "Image SHA-1 not known for {$row->img_name}." ); } else { - $file = $repo->newFile( $row->img_name ); - if ( $oldLayout === 'sha1' ) { $spath = "{$origBase}/{$sha1[0]}/{$sha1[1]}/{$sha1[2]}/{$sha1}"; } else { @@ -98,7 +101,8 @@ class MigrateFileRepoLayout extends Maintenance { $dpath = $file->getPath(); } - $status = $be->prepare( array( 'dir' => dirname( $dpath ) ) ); + $status = $be->prepare( array( + 'dir' => dirname( $dpath ), 'bypassReadOnly' => 1 ) ); if ( !$status->isOK() ) { $this->error( print_r( $status->getErrorsArray(), true ) ); } @@ -130,7 +134,8 @@ class MigrateFileRepoLayout extends Maintenance { $dpath = $ofile->getPath(); } - $status = $be->prepare( array( 'dir' => dirname( $dpath ) ) ); + $status = $be->prepare( array( + 'dir' => dirname( $dpath ), 'bypassReadOnly' => 1 ) ); if ( !$status->isOK() ) { $this->error( print_r( $status->getErrorsArray(), true ) ); } @@ -187,7 +192,8 @@ class MigrateFileRepoLayout extends Maintenance { '/' . $repo->getDeletedHashPath( $sha1Key ) . $sha1Key; } - $status = $be->prepare( array( 'dir' => dirname( $dpath ) ) ); + $status = $be->prepare( array( + 'dir' => dirname( $dpath ), 'bypassReadOnly' => 1 ) ); if ( !$status->isOK() ) { $this->error( print_r( $status->getErrorsArray(), true ) ); } @@ -219,7 +225,7 @@ class MigrateFileRepoLayout extends Maintenance { $this->output( "\"{$op['img']}\" (dest: {$op['dst']})\n" ); } - $status = $be->doOperations( $ops ); + $status = $be->doOperations( $ops, array( 'bypassReadOnly' => 1 ) ); if ( !$status->isOK() ) { $this->output( print_r( $status->getErrorsArray(), true ) ); }