Merge "Add loadWithArgv() to Maintenance class"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 31 Dec 2015 01:36:37 +0000 (01:36 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 31 Dec 2015 01:36:37 +0000 (01:36 +0000)
15 files changed:
includes/export/Dump7ZipOutput.php
includes/export/DumpBZip2Output.php
includes/export/DumpFileOutput.php
includes/export/DumpFilter.php
includes/export/DumpGZipOutput.php
includes/export/DumpLatestFilter.php
includes/export/DumpMultiWriter.php
includes/export/DumpNamespaceFilter.php
includes/export/DumpNotalkFilter.php
includes/export/DumpOutput.php
includes/export/DumpPipeOutput.php
includes/export/WikiExporter.php
includes/filebackend/FSFileBackend.php
includes/filebackend/FileOpBatch.php
maintenance/storage/recompressTracked.php

index ec7a6b2..c299166 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Sends dump output via the p7zip compressor.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index 8767b92..bbc1c11 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Sends dump output via the bgzip2 compressor.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index de1c0a5..4bec7d4 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Stream outputter to send data to a file.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index 224262d..5c27658 100644 (file)
@@ -4,7 +4,7 @@
  * This just does output filtering and streaming; XML formatting is done
  * higher up, so be careful in what you do.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index 3f0333e..d9e74a7 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Sends dump output via the gzip compressor.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index d21dfa9..d3742b7 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Dump output filter to include only the last revision in each page sequence.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index 2f5a782..6fe11a3 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Base class for output stream; prints to stdout or buffer or wherever.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index c7d1b2e..e8d4428 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Dump output filter to include or exclude pages in a given set of namespaces.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index 9974d67..d99b1b1 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Simple dump output filter to exclude all talk pages.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index bdcaf35..edd73fc 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Base class for output stream; prints to stdout or buffer or wherever.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index b4ad672..61177ab 100644 (file)
@@ -4,7 +4,7 @@
  * Even if compression is available in a library, using a separate
  * program can allow us to make use of a multi-processor system.
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index a24418c..ab2632d 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Base class for exporting
  *
- * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright Â© 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
  * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
index 07370ad..f11c218 100644 (file)
@@ -64,6 +64,7 @@ class FSFileBackend extends FileBackendStore {
         *   - containerPaths : Map of container names to custom file system directories.
         *                      This should only be used for backwards-compatibility.
         *   - fileMode       : Octal UNIX file permissions to use on files stored.
+        * @param array $config
         */
        public function __construct( array $config ) {
                parent::__construct( $config );
@@ -561,9 +562,6 @@ class FSFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doClearCache()
-        */
        protected function doClearCache( array $paths = null ) {
                clearstatcache(); // clear the PHP file stat cache
        }
@@ -682,7 +680,7 @@ class FSFileBackend extends FileBackendStore {
        }
 
        /**
-        * @param FileBackendStoreOpHandle[] $fileOpHandles
+        * @param FSFileOpHandle[] $fileOpHandles
         *
         * @return Status[]
         */
index faa1314..95a7897 100644 (file)
@@ -49,7 +49,7 @@ class FileOpBatch {
         *   - a) unexpected operation errors occurred (network partitions, disk full...)
         *   - b) significant operation errors occurred and 'force' was not set
         *
-        * @param array $performOps List of FileOp operations
+        * @param FileOp[] $performOps List of FileOp operations
         * @param array $opts Batch operation options
         * @param FileJournal $journal Journal to log operations to
         * @return Status
@@ -147,6 +147,7 @@ class FileOpBatch {
        protected static function runParallelBatches( array $pPerformOps, Status $status ) {
                $aborted = false; // set to true on unexpected errors
                foreach ( $pPerformOps as $performOpsBatch ) {
+                       /** @var FileOp[] $performOpsBatch */
                        if ( $aborted ) { // check batch op abort flag...
                                // We can't continue (even with $ignoreErrors) as $predicates is wrong.
                                // Log the remaining ops as failed for recovery...
@@ -157,6 +158,7 @@ class FileOpBatch {
                                }
                                continue;
                        }
+                       /** @var Status[] $statuses */
                        $statuses = array();
                        $opHandles = array();
                        // Get the backend; all sub-batch ops belong to a single backend
index 62e057b..7386df8 100644 (file)
@@ -58,6 +58,7 @@ class RecompressTracked {
        public $orphanBatchSize = 1000;
        public $reportingInterval = 10;
        public $numProcs = 1;
+       public $numBatches = 0;
        public $useDiff, $pageBlobClass, $orphanBlobClass;
        public $slavePipes, $slaveProcs, $prevSlaveId;
        public $copyOnly = false;
@@ -195,7 +196,7 @@ class RecompressTracked {
 
                        return false;
                }
-               $row = $dbr->selectRow( 'blob_tracking', '*', false, __METHOD__ );
+               $row = $dbr->selectRow( 'blob_tracking', '*', '', __METHOD__ );
                if ( !$row ) {
                        $this->info( "Warning: blob_tracking table contains no rows, skipping this wiki." );
 
@@ -228,7 +229,7 @@ class RecompressTracked {
 
                $this->slavePipes = $this->slaveProcs = array();
                for ( $i = 0; $i < $this->numProcs; $i++ ) {
-                       $pipes = false;
+                       $pipes = array();
                        $spec = array(
                                array( 'pipe', 'r' ),
                                array( 'file', 'php://stdout', 'w' ),
@@ -340,10 +341,10 @@ class RecompressTracked {
                                break;
                        }
                        foreach ( $res as $row ) {
+                               $startId = $row->bt_page;
                                $this->dispatch( 'doPage', $row->bt_page );
                                $i++;
                        }
-                       $startId = $row->bt_page;
                        $this->report( 'pages', $i, $numPages );
                }
                $this->report( 'pages', $i, $numPages );
@@ -413,6 +414,7 @@ class RecompressTracked {
                        }
                        $ids = array();
                        foreach ( $res as $row ) {
+                               $startId = $row->bt_text_id;
                                $ids[] = $row->bt_text_id;
                                $i++;
                        }
@@ -431,7 +433,6 @@ class RecompressTracked {
                                call_user_func_array( array( $this, 'dispatch' ), $args );
                        }
 
-                       $startId = $row->bt_text_id;
                        $this->report( 'orphans', $i, $numOrphans );
                }
                $this->report( 'orphans', $i, $numOrphans );
@@ -513,6 +514,7 @@ class RecompressTracked {
 
                        $lastTextId = 0;
                        foreach ( $res as $row ) {
+                               $startId = $row->bt_text_id;
                                if ( $lastTextId == $row->bt_text_id ) {
                                        // Duplicate (null edit)
                                        continue;
@@ -533,7 +535,6 @@ class RecompressTracked {
                                        wfWaitForSlaves();
                                }
                        }
-                       $startId = $row->bt_text_id;
                }
 
                $this->debug( "$titleText: committing blob with " . $trx->getSize() . " items" );
@@ -559,7 +560,7 @@ class RecompressTracked {
                        exit( 1 );
                }
                $dbw = wfGetDB( DB_MASTER );
-               $this->beginTransaction( $dbw, __METHOD__ );
+               $dbw->begin( __METHOD__ );
                $dbw->update( 'text',
                        array( // set
                                'old_text' => $url,
@@ -575,7 +576,7 @@ class RecompressTracked {
                        array( 'bt_text_id' => $textId ),
                        __METHOD__
                );
-               $this->commitTransaction( $dbw, __METHOD__ );
+               $dbw->commit( __METHOD__ );
        }
 
        /**
@@ -611,12 +612,12 @@ class RecompressTracked {
                        }
                        $this->debug( 'Incomplete: ' . $res->numRows() . ' rows' );
                        foreach ( $res as $row ) {
+                               $startId = $row->bt_text_id;
                                $this->moveTextRow( $row->bt_text_id, $row->bt_new_url );
                                if ( $row->bt_text_id % 10 == 0 ) {
                                        wfWaitForSlaves();
                                }
                        }
-                       $startId = $row->bt_text_id;
                }
        }
 
@@ -693,8 +694,10 @@ class RecompressTracked {
  * Class to represent a recompression operation for a single CGZ blob
  */
 class CgzCopyTransaction {
+       /** @var RecompressTracked */
        public $parent;
        public $blobClass;
+       /** @var ConcatenatedGzipHistoryBlob */
        public $cgz;
        public $referrers;
 
@@ -766,7 +769,7 @@ class CgzCopyTransaction {
                 * We do a locking read to prevent closer-run race conditions.
                 */
                $dbw = wfGetDB( DB_MASTER );
-               $this->beginTransaction( $dbw, __METHOD__ );
+               $dbw->begin( __METHOD__ );
                $res = $dbw->select( 'blob_tracking',
                        array( 'bt_text_id', 'bt_moved' ),
                        array( 'bt_text_id' => array_keys( $this->referrers ) ),
@@ -787,7 +790,8 @@ class CgzCopyTransaction {
                                // All have been moved already
                                if ( $originalCount > 1 ) {
                                        // This is suspcious, make noise
-                                       $this->critical( "Warning: concurrent operation detected, are there two conflicting " .
+                                       $this->parent->critical(
+                                               "Warning: concurrent operation detected, are there two conflicting " .
                                                "processes running, doing the same job?" );
                                }
 
@@ -820,7 +824,7 @@ class CgzCopyTransaction {
                $targetDB->commit( __METHOD__ );
                // Critical section here: interruption at this point causes blob duplication
                // Reversing the order of the commits would cause data loss instead
-               $this->commitTransaction( $dbw, __METHOD__ );
+               $dbw->commit( __METHOD__ );
 
                // Write the new URLs to the text table and set the moved flag
                if ( !$this->parent->copyOnly ) {