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
This commit is contained in:
parent
d21c75418d
commit
b4ff14f730
4 changed files with 19 additions and 13 deletions
|
|
@ -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 ) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
if ( !strlen( $sha1 ) ) {
|
||||
$this->error( "Image SHA-1 not set for {$row->img_name}." );
|
||||
} else {
|
||||
$file = $repo->newFile( $row->img_name );
|
||||
/** @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 known for {$row->img_name}." );
|
||||
} else {
|
||||
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 ) );
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue