diff options
Diffstat (limited to 'maintenance/storage/checkStorage.php')
-rw-r--r-- | maintenance/storage/checkStorage.php | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/maintenance/storage/checkStorage.php b/maintenance/storage/checkStorage.php index 6c669bfa..03dc113a 100644 --- a/maintenance/storage/checkStorage.php +++ b/maintenance/storage/checkStorage.php @@ -22,7 +22,7 @@ */ if ( !defined( 'MEDIAWIKI' ) ) { - require_once( __DIR__ . '/../commandLine.inc' ); + require_once __DIR__ . '/../commandLine.inc'; $cs = new CheckStorage; $fix = isset( $options['fix'] ); @@ -38,14 +38,16 @@ if ( !defined( 'MEDIAWIKI' ) ) { // ---------------------------------------------------------------------------------- /** + * Maintenance script to do various checks on external storage. + * * @ingroup Maintenance ExternalStorage */ class CheckStorage { const CONCAT_HEADER = 'O:27:"concatenatedgziphistoryblob"'; - var $oldIdMap, $errors; - var $dbStore = null; + public $oldIdMap, $errors; + public $dbStore = null; - var $errorDescriptions = array( + public $errorDescriptions = array( 'restore text' => 'Damaged text, need to be restored from a backup', 'restore revision' => 'Damaged revision row, need to be restored from a backup', 'unfixable' => 'Unexpected errors with no automated fixing method', @@ -73,7 +75,7 @@ class CheckStorage { 'fixable' => array(), ); - for ( $chunkStart = 1 ; $chunkStart < $maxRevId; $chunkStart += $chunkSize ) { + for ( $chunkStart = 1; $chunkStart < $maxRevId; $chunkStart += $chunkSize ) { $chunkEnd = $chunkStart + $chunkSize - 1; // print "$chunkStart of $maxRevId\n"; @@ -441,18 +443,26 @@ class CheckStorage { function importRevision( &$revision, &$importer ) { $id = $revision->getID(); - $text = $revision->getText(); + $content = $revision->getContent( Revision::RAW ); + $id = $id ? $id : ''; + + if ( $content === null ) { + echo "Revision $id is broken, we have no content available\n"; + return; + } + + $text = $content->serialize(); if ( $text === '' ) { // This is what happens if the revision was broken at the time the // dump was made. Unfortunately, it also happens if the revision was // legitimately blank, so there's no way to tell the difference. To // be safe, we'll skip it and leave it broken - $id = $id ? $id : ''; + echo "Revision $id is blank in the dump, may have been broken before export\n"; return; } - if ( !$id ) { + if ( !$id ) { // No ID, can't import echo "No id tag in revision, can't import\n"; return; |