Merge "add lbzip2 output processor for exports"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 23 Mar 2019 23:35:29 +0000 (23:35 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 23 Mar 2019 23:35:29 +0000 (23:35 +0000)
1  2 
autoload.php
maintenance/includes/BackupDumper.php

diff --combined autoload.php
@@@ -426,6 -426,7 +426,7 @@@ $wgAutoloadLocalClasses = 
        'DumpFilter' => __DIR__ . '/includes/export/DumpFilter.php',
        'DumpGZipOutput' => __DIR__ . '/includes/export/DumpGZipOutput.php',
        'DumpIterator' => __DIR__ . '/maintenance/dumpIterator.php',
+       'DumpLBZip2Output' => __DIR__ . '/includes/export/DumpLBZip2Output.php',
        'DumpLatestFilter' => __DIR__ . '/includes/export/DumpLatestFilter.php',
        'DumpLinks' => __DIR__ . '/maintenance/dumpLinks.php',
        'DumpMessages' => __DIR__ . '/maintenance/language/dumpMessages.php',
        'Revision' => __DIR__ . '/includes/Revision.php',
        'RevisionDeleteUser' => __DIR__ . '/includes/revisiondelete/RevisionDeleteUser.php',
        'RevisionDeleter' => __DIR__ . '/includes/revisiondelete/RevisionDeleter.php',
 -      'RevisionItem' => __DIR__ . '/includes/RevisionList.php',
 -      'RevisionItemBase' => __DIR__ . '/includes/RevisionList.php',
 -      'RevisionList' => __DIR__ . '/includes/RevisionList.php',
 -      'RevisionListBase' => __DIR__ . '/includes/RevisionList.php',
 +      'RevisionItem' => __DIR__ . '/includes/revisionlist/RevisionItem.php',
 +      'RevisionItemBase' => __DIR__ . '/includes/revisionlist/RevisionItemBase.php',
 +      'RevisionList' => __DIR__ . '/includes/revisionlist/RevisionList.php',
 +      'RevisionListBase' => __DIR__ . '/includes/revisionlist/RevisionListBase.php',
        'RiffExtractor' => __DIR__ . '/includes/libs/RiffExtractor.php',
        'RightsLogFormatter' => __DIR__ . '/includes/logging/RightsLogFormatter.php',
        'RollbackAction' => __DIR__ . '/includes/actions/RollbackAction.php',
@@@ -51,7 -51,6 +51,7 @@@ abstract class BackupDumper extends Mai
        protected $reportingInterval = 100;
        protected $pageCount = 0;
        protected $revCount = 0;
 +      protected $schemaVersion = null; // use default
        protected $server = null; // use default
        protected $sink = null; // Output filters
        protected $lastTime = 0;
@@@ -87,6 -86,7 +87,7 @@@
                $this->registerOutput( 'gzip', DumpGZipOutput::class );
                $this->registerOutput( 'bzip2', DumpBZip2Output::class );
                $this->registerOutput( 'dbzip2', DumpDBZip2Output::class );
+               $this->registerOutput( 'lbzip2', DumpLBZip2Output::class );
                $this->registerOutput( '7zip', Dump7ZipOutput::class );
  
                $this->registerFilter( 'latest', DumpLatestFilter::class );
                $this->addOption( 'plugin', 'Load a dump plugin class. Specify as <class>[:<file>].',
                        false, true, false, true );
                $this->addOption( 'output', 'Begin a filtered output stream; Specify as <type>:<file>. ' .
-                       '<type>s: file, gzip, bzip2, 7zip, dbzip2', false, true, false, true );
+                       '<type>s: file, gzip, bzip2, 7zip, dbzip2, lbzip2', false, true, false, true );
                $this->addOption( 'filter', 'Add a filter on an output branch. Specify as ' .
                        '<type>[:<options>]. <types>s: latest, notalk, namespace', false, true, false, true );
                $this->addOption( 'report', 'Report position and speed after every n pages processed. ' .
                        'Default: 100.', false, true );
 +              $this->addOption( 'schema-version', 'Schema version to use for output. ' .
 +                      'Default: ' . WikiExporter::schemaVersion(), false, true );
                $this->addOption( 'server', 'Force reading from MySQL server', false, true );
                $this->addOption( '7ziplevel', '7zip compression level for all 7zip outputs. Used for ' .
                        '-mx option to 7za command.', false, true );
                $sink = null;
                $sinks = [];
  
 +              $this->schemaVersion = WikiExporter::schemaVersion();
 +
                $options = $this->orderedOptions;
                foreach ( $options as $arg ) {
                        $opt = $arg[0];
                                        unset( $sink );
                                        $sink = $filter;
  
 +                                      break;
 +                              case 'schema-version':
 +                                      if ( !in_array( $param, XmlDumpWriter::$supportedSchemas ) ) {
 +                                              $this->fatalError(
 +                                                      "Unsupported schema version $param. Supported versions: " .
 +                                                      implode( ', ', XmlDumpWriter::$supportedSchemas )
 +                                              );
 +                                      }
 +                                      $this->schemaVersion = $param;
                                        break;
                        }
                }
  
                $db = $this->backupDb();
                $exporter = new WikiExporter( $db, $history, $text );
 +              $exporter->setSchemaVersion( $this->schemaVersion );
                $exporter->dumpUploads = $this->dumpUploads;
                $exporter->dumpUploadFileContents = $this->dumpUploadFileContents;