From dd359741cc90aec7fa8af70da4e0043a5ce89fa4 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Fri, 24 Feb 2017 08:17:16 -0800 Subject: [PATCH] Move DB errors to Rdbms namespace Change-Id: I463bd86123501abc68fdb78b4cda6110f7af2549 --- autoload.php | 10 ++++++++++ includes/GlobalFunctions.php | 1 + includes/MediaWiki.php | 1 + includes/WatchedItemStore.php | 1 + includes/api/ApiErrorFormatter.php | 3 ++- includes/api/ApiMain.php | 7 ++++--- includes/cache/localisation/LCStoreDB.php | 1 + includes/db/DatabaseOracle.php | 2 ++ includes/exception/MWExceptionHandler.php | 1 + includes/exception/MWExceptionRenderer.php | 5 +++++ includes/filebackend/filejournal/DBFileJournal.php | 1 + includes/filebackend/lockmanager/MySqlLockManager.php | 1 + includes/filerepo/file/ForeignDBFile.php | 2 ++ includes/installer/MssqlInstaller.php | 2 ++ includes/installer/MysqlInstaller.php | 2 ++ includes/installer/OracleInstaller.php | 2 ++ includes/installer/PostgresInstaller.php | 2 ++ includes/installer/SqliteInstaller.php | 1 + includes/jobqueue/JobQueueDB.php | 4 +++- includes/jobqueue/JobRunner.php | 2 ++ includes/jobqueue/jobs/RecentChangesUpdateJob.php | 1 + includes/jobqueue/jobs/RefreshLinksJob.php | 1 + includes/libs/lockmanager/DBLockManager.php | 1 + includes/libs/lockmanager/PostgreSqlLockManager.php | 3 +++ includes/libs/rdbms/database/Database.php | 4 ---- includes/libs/rdbms/database/DatabaseMssql.php | 3 --- includes/libs/rdbms/database/DatabaseMysql.php | 2 -- includes/libs/rdbms/database/DatabaseMysqlBase.php | 4 ---- includes/libs/rdbms/database/DatabaseMysqli.php | 1 - includes/libs/rdbms/database/DatabasePostgres.php | 2 -- includes/libs/rdbms/database/DatabaseSqlite.php | 3 --- includes/libs/rdbms/database/IDatabase.php | 4 ---- includes/libs/rdbms/database/IMaintainableDatabase.php | 1 - .../rdbms/database/resultwrapper/IResultWrapper.php | 1 - includes/libs/rdbms/exception/DBAccessError.php | 4 ++++ includes/libs/rdbms/exception/DBConnectionError.php | 4 +++- includes/libs/rdbms/exception/DBError.php | 7 ++++++- includes/libs/rdbms/exception/DBExpectedError.php | 9 ++++++++- includes/libs/rdbms/exception/DBQueryError.php | 6 ++++-- includes/libs/rdbms/exception/DBReadOnlyError.php | 4 ++++ .../libs/rdbms/exception/DBReplicationWaitError.php | 4 ++++ includes/libs/rdbms/exception/DBTransactionError.php | 5 +++++ .../libs/rdbms/exception/DBTransactionSizeError.php | 4 ++++ includes/libs/rdbms/exception/DBUnexpectedError.php | 4 ++++ includes/libs/rdbms/lbfactory/ILBFactory.php | 2 -- includes/libs/rdbms/lbfactory/LBFactory.php | 2 -- includes/libs/rdbms/loadbalancer/ILoadBalancer.php | 4 ---- includes/libs/rdbms/loadbalancer/LoadBalancer.php | 7 ------- includes/objectcache/SqlBagOStuff.php | 3 +++ includes/page/WikiPage.php | 2 ++ includes/profiler/output/ProfilerOutputDb.php | 2 ++ includes/resourceloader/ResourceLoader.php | 1 + includes/specialpage/QueryPage.php | 1 + includes/user/User.php | 1 + maintenance/Maintenance.php | 2 ++ maintenance/oracle/alterSharedConstraints.php | 2 ++ maintenance/sql.php | 1 + maintenance/sqlite.inc | 1 + maintenance/storage/trackBlobs.php | 2 ++ 59 files changed, 116 insertions(+), 50 deletions(-) diff --git a/autoload.php b/autoload.php index bfac50d456..20a1bf41c2 100644 --- a/autoload.php +++ b/autoload.php @@ -1594,8 +1594,18 @@ $wgAutoloadLocalClasses = [ 'Wikimedia\\Rdbms\\Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php', 'Wikimedia\\Rdbms\\ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php', 'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php', + 'Wikimedia\\Rdbms\\DBAccessError' => __DIR__ . '/includes/libs/rdbms/exception/DBAccessError.php', 'Wikimedia\\Rdbms\\DBConnRef' => __DIR__ . '/includes/libs/rdbms/database/DBConnRef.php', + 'Wikimedia\\Rdbms\\DBConnectionError' => __DIR__ . '/includes/libs/rdbms/exception/DBConnectionError.php', + 'Wikimedia\\Rdbms\\DBError' => __DIR__ . '/includes/libs/rdbms/exception/DBError.php', + 'Wikimedia\\Rdbms\\DBExpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBExpectedError.php', 'Wikimedia\\Rdbms\\DBMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/DBMasterPos.php', + 'Wikimedia\\Rdbms\\DBQueryError' => __DIR__ . '/includes/libs/rdbms/exception/DBQueryError.php', + 'Wikimedia\\Rdbms\\DBReadOnlyError' => __DIR__ . '/includes/libs/rdbms/exception/DBReadOnlyError.php', + 'Wikimedia\\Rdbms\\DBReplicationWaitError' => __DIR__ . '/includes/libs/rdbms/exception/DBReplicationWaitError.php', + 'Wikimedia\\Rdbms\\DBTransactionError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionError.php', + 'Wikimedia\\Rdbms\\DBTransactionSizeError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionSizeError.php', + 'Wikimedia\\Rdbms\\DBUnexpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBUnexpectedError.php', 'Wikimedia\\Rdbms\\Database' => __DIR__ . '/includes/libs/rdbms/database/Database.php', 'Wikimedia\\Rdbms\\DatabaseDomain' => __DIR__ . '/includes/libs/rdbms/database/DatabaseDomain.php', 'Wikimedia\\Rdbms\\DatabaseMssql' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMssql.php', diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 243d066184..4e60e633fd 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -28,6 +28,7 @@ use Liuggio\StatsdClient\Sender\SocketSender; use MediaWiki\Logger\LoggerFactory; use MediaWiki\Session\SessionManager; use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\DBReplicationWaitError; // Hide compatibility functions from Doxygen /// @cond diff --git a/includes/MediaWiki.php b/includes/MediaWiki.php index ef0563e550..0fd6b92e63 100644 --- a/includes/MediaWiki.php +++ b/includes/MediaWiki.php @@ -25,6 +25,7 @@ use Psr\Log\LoggerInterface; use MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\ChronologyProtector; use Wikimedia\Rdbms\LBFactory; +use Wikimedia\Rdbms\DBConnectionError; /** * The MediaWiki class is the helper class for the index.php entry point. diff --git a/includes/WatchedItemStore.php b/includes/WatchedItemStore.php index 70fdbf13af..b334098e63 100644 --- a/includes/WatchedItemStore.php +++ b/includes/WatchedItemStore.php @@ -7,6 +7,7 @@ use MediaWiki\MediaWikiServices; use Wikimedia\Assert\Assert; use Wikimedia\ScopedCallback; use Wikimedia\Rdbms\LoadBalancer; +use Wikimedia\Rdbms\DBUnexpectedError; /** * Storage layer class for WatchedItems. diff --git a/includes/api/ApiErrorFormatter.php b/includes/api/ApiErrorFormatter.php index c52b731bbd..5484a78efe 100644 --- a/includes/api/ApiErrorFormatter.php +++ b/includes/api/ApiErrorFormatter.php @@ -176,7 +176,8 @@ class ApiErrorFormatter { } else { $msg = new RawMessage( '$1' ); if ( !isset( $options['code'] ) ) { - $options['code'] = 'internal_api_error_' . get_class( $exception ); + $class = preg_replace( '#^Wikimedia\\\Rdbms\\\#', '', get_class( $exception ) ); + $options['code'] = 'internal_api_error_' . $class; } } $params = [ wfEscapeWikiText( $exception->getMessage() ) ]; diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php index 4068a50bb6..00f976e907 100644 --- a/includes/api/ApiMain.php +++ b/includes/api/ApiMain.php @@ -1,7 +1,5 @@ @gmail.com" @@ -28,6 +26,8 @@ use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; use Wikimedia\Timestamp\TimestampException; +use Wikimedia\Rdbms\DBQueryError; +use Wikimedia\Rdbms\DBError; /** * This is the main API class, used for both external and internal processing. @@ -1044,7 +1044,8 @@ class ApiMain extends ApiBase { } else { // Something is seriously wrong $config = $this->getConfig(); - $code = 'internal_api_error_' . get_class( $e ); + $class = preg_replace( '#^Wikimedia\\\Rdbms\\\#', '', get_class( $e ) ); + $code = 'internal_api_error_' . $class; if ( ( $e instanceof DBQueryError ) && !$config->get( 'ShowSQLErrors' ) ) { $params = [ 'apierror-databaseerror', WebRequest::getRequestId() ]; } else { diff --git a/includes/cache/localisation/LCStoreDB.php b/includes/cache/localisation/LCStoreDB.php index 52611ec508..c57145c04d 100644 --- a/includes/cache/localisation/LCStoreDB.php +++ b/includes/cache/localisation/LCStoreDB.php @@ -19,6 +19,7 @@ */ use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\DBQueryError; /** * LCStore implementation which uses the standard DB functions to store data. diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php index a0d7ad893f..b728786896 100644 --- a/includes/db/DatabaseOracle.php +++ b/includes/db/DatabaseOracle.php @@ -24,6 +24,8 @@ use Wikimedia\Rdbms\Database; use Wikimedia\Rdbms\Blob; use Wikimedia\Rdbms\ResultWrapper; +use Wikimedia\Rdbms\DBConnectionError; +use Wikimedia\Rdbms\DBUnexpectedError; /** * @ingroup Database diff --git a/includes/exception/MWExceptionHandler.php b/includes/exception/MWExceptionHandler.php index 749be3c6cb..433274e339 100644 --- a/includes/exception/MWExceptionHandler.php +++ b/includes/exception/MWExceptionHandler.php @@ -21,6 +21,7 @@ use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; use Psr\Log\LogLevel; +use Wikimedia\Rdbms\DBError; /** * Handler class for MWExceptions diff --git a/includes/exception/MWExceptionRenderer.php b/includes/exception/MWExceptionRenderer.php index a569bcd808..a9bd4da6f9 100644 --- a/includes/exception/MWExceptionRenderer.php +++ b/includes/exception/MWExceptionRenderer.php @@ -19,6 +19,11 @@ * @author Aaron Schulz */ +use Wikimedia\Rdbms\DBConnectionError; +use Wikimedia\Rdbms\DBError; +use Wikimedia\Rdbms\DBReadOnlyError; +use Wikimedia\Rdbms\DBExpectedError; + /** * Class to expose exceptions to the client (API bots, users, admins using CLI scripts) * @since 1.28 diff --git a/includes/filebackend/filejournal/DBFileJournal.php b/includes/filebackend/filejournal/DBFileJournal.php index d09c245877..aa97c9a974 100644 --- a/includes/filebackend/filejournal/DBFileJournal.php +++ b/includes/filebackend/filejournal/DBFileJournal.php @@ -24,6 +24,7 @@ use MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\DBError; /** * Version of FileJournal that logs to a DB table diff --git a/includes/filebackend/lockmanager/MySqlLockManager.php b/includes/filebackend/lockmanager/MySqlLockManager.php index 8510d0c18c..2108aed4e1 100644 --- a/includes/filebackend/lockmanager/MySqlLockManager.php +++ b/includes/filebackend/lockmanager/MySqlLockManager.php @@ -1,6 +1,7 @@ fname = $fname; } } + +class_alias( DBQueryError::class, 'DBQueryError' ); diff --git a/includes/libs/rdbms/exception/DBReadOnlyError.php b/includes/libs/rdbms/exception/DBReadOnlyError.php index d4dce1e13f..439334391c 100644 --- a/includes/libs/rdbms/exception/DBReadOnlyError.php +++ b/includes/libs/rdbms/exception/DBReadOnlyError.php @@ -19,8 +19,12 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + /** * @ingroup Database */ class DBReadOnlyError extends DBExpectedError { } + +class_alias( DBReadOnlyError::class, 'DBReadOnlyError' ); diff --git a/includes/libs/rdbms/exception/DBReplicationWaitError.php b/includes/libs/rdbms/exception/DBReplicationWaitError.php index c5e1ed7033..457431e93b 100644 --- a/includes/libs/rdbms/exception/DBReplicationWaitError.php +++ b/includes/libs/rdbms/exception/DBReplicationWaitError.php @@ -19,9 +19,13 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + /** * Exception class for replica DB wait timeouts * @ingroup Database */ class DBReplicationWaitError extends DBExpectedError { } + +class_alias( DBReplicationWaitError::class, 'DBReplicationWaitError' ); diff --git a/includes/libs/rdbms/exception/DBTransactionError.php b/includes/libs/rdbms/exception/DBTransactionError.php index a4886671c8..fd79773e47 100644 --- a/includes/libs/rdbms/exception/DBTransactionError.php +++ b/includes/libs/rdbms/exception/DBTransactionError.php @@ -19,8 +19,13 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + /** * @ingroup Database */ class DBTransactionError extends DBExpectedError { } + +class_alias( DBTransactionError::class, 'DBTransactionError' ); + diff --git a/includes/libs/rdbms/exception/DBTransactionSizeError.php b/includes/libs/rdbms/exception/DBTransactionSizeError.php index 4e467b2c0b..e45b9f3191 100644 --- a/includes/libs/rdbms/exception/DBTransactionSizeError.php +++ b/includes/libs/rdbms/exception/DBTransactionSizeError.php @@ -19,6 +19,8 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + /** * @ingroup Database */ @@ -27,3 +29,5 @@ class DBTransactionSizeError extends DBTransactionError { return 'transaction-duration-limit-exceeded'; } } + +class_alias( DBTransactionSizeError::class, 'DBTransactionSizeError' ); diff --git a/includes/libs/rdbms/exception/DBUnexpectedError.php b/includes/libs/rdbms/exception/DBUnexpectedError.php index 5a1267159a..9c67eb5ffa 100644 --- a/includes/libs/rdbms/exception/DBUnexpectedError.php +++ b/includes/libs/rdbms/exception/DBUnexpectedError.php @@ -19,8 +19,12 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + /** * @ingroup Database */ class DBUnexpectedError extends DBError { } + +class_alias( DBUnexpectedError::class, 'DBUnexpectedError' ); diff --git a/includes/libs/rdbms/lbfactory/ILBFactory.php b/includes/libs/rdbms/lbfactory/ILBFactory.php index faf7fb179c..ac79acc64f 100644 --- a/includes/libs/rdbms/lbfactory/ILBFactory.php +++ b/includes/libs/rdbms/lbfactory/ILBFactory.php @@ -24,8 +24,6 @@ namespace Wikimedia\Rdbms; use InvalidArgumentException; -use DBTransactionError; -use DBReplicationWaitError; /** * An interface for generating database load balancers diff --git a/includes/libs/rdbms/lbfactory/LBFactory.php b/includes/libs/rdbms/lbfactory/LBFactory.php index 86547b9a77..e8210c8552 100644 --- a/includes/libs/rdbms/lbfactory/LBFactory.php +++ b/includes/libs/rdbms/lbfactory/LBFactory.php @@ -30,8 +30,6 @@ use EmptyBagOStuff; use WANObjectCache; use Exception; use RuntimeException; -use DBTransactionError; -use DBReplicationWaitError; /** * An interface for generating database load balancers diff --git a/includes/libs/rdbms/loadbalancer/ILoadBalancer.php b/includes/libs/rdbms/loadbalancer/ILoadBalancer.php index 8b5a98db06..98b94fe29a 100644 --- a/includes/libs/rdbms/loadbalancer/ILoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/ILoadBalancer.php @@ -23,10 +23,6 @@ */ namespace Wikimedia\Rdbms; -use DBError; -use DBAccessError; -use DBTransactionError; -use DBExpectedError; use Exception; use InvalidArgumentException; diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index ffa4f78a76..0e07facfdc 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -29,13 +29,6 @@ use BagOStuff; use EmptyBagOStuff; use WANObjectCache; use ArrayUtils; -use DBError; -use DBAccessError; -use DBExpectedError; -use DBUnexpectedError; -use DBTransactionError; -use DBTransactionSizeError; -use DBConnectionError; use InvalidArgumentException; use RuntimeException; use Exception; diff --git a/includes/objectcache/SqlBagOStuff.php b/includes/objectcache/SqlBagOStuff.php index 141a375c62..a4a6ba845a 100644 --- a/includes/objectcache/SqlBagOStuff.php +++ b/includes/objectcache/SqlBagOStuff.php @@ -23,6 +23,9 @@ use Wikimedia\Rdbms\Database; use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\DBError; +use Wikimedia\Rdbms\DBQueryError; +use Wikimedia\Rdbms\DBConnectionError; use \MediaWiki\MediaWikiServices; use \Wikimedia\WaitConditionLoop; use \Wikimedia\Rdbms\TransactionProfiler; diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index 7044e6a942..82c32da5be 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -24,6 +24,8 @@ use \MediaWiki\Logger\LoggerFactory; use \MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\FakeResultWrapper; use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\DBError; +use Wikimedia\Rdbms\DBUnexpectedError; /** * Class representing a MediaWiki article and history. diff --git a/includes/profiler/output/ProfilerOutputDb.php b/includes/profiler/output/ProfilerOutputDb.php index 264ec0c637..2225e3f630 100644 --- a/includes/profiler/output/ProfilerOutputDb.php +++ b/includes/profiler/output/ProfilerOutputDb.php @@ -21,6 +21,8 @@ * @ingroup Profiler */ +use Wikimedia\Rdbms\DBError; + /** * Logs profiling data into the local DB * diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index e72eaf2988..3cd7821ed8 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -27,6 +27,7 @@ use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use WrappedString\WrappedString; +use Wikimedia\Rdbms\DBConnectionError; /** * Dynamic JavaScript and CSS resource loading system. diff --git a/includes/specialpage/QueryPage.php b/includes/specialpage/QueryPage.php index 68d2d3073e..93873c02a2 100644 --- a/includes/specialpage/QueryPage.php +++ b/includes/specialpage/QueryPage.php @@ -23,6 +23,7 @@ use Wikimedia\Rdbms\ResultWrapper; use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\DBError; /** * This is a class for doing query pages; since they're almost all the same, diff --git a/includes/user/User.php b/includes/user/User.php index 30e370e5e8..b8a36b8601 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -28,6 +28,7 @@ use MediaWiki\Auth\AuthenticationResponse; use MediaWiki\Auth\AuthenticationRequest; use Wikimedia\ScopedCallback; use Wikimedia\Rdbms\Database; +use Wikimedia\Rdbms\DBExpectedError; /** * String Some punctuation to prevent editing from broken text-mangling proxies. diff --git a/maintenance/Maintenance.php b/maintenance/Maintenance.php index e5ba411a34..478a0c41ae 100644 --- a/maintenance/Maintenance.php +++ b/maintenance/Maintenance.php @@ -25,6 +25,8 @@ require_once __DIR__ . '/../includes/PHPVersionCheck.php'; wfEntryPointCheck( 'cli' ); +use Wikimedia\Rdbms\DBReplicationWaitError; + /** * @defgroup MaintenanceArchive Maintenance archives * @ingroup Maintenance diff --git a/maintenance/oracle/alterSharedConstraints.php b/maintenance/oracle/alterSharedConstraints.php index ba1e8799ae..48c3d37511 100644 --- a/maintenance/oracle/alterSharedConstraints.php +++ b/maintenance/oracle/alterSharedConstraints.php @@ -19,6 +19,8 @@ * @ingroup Maintenance */ +use Wikimedia\Rdbms\DBQueryError; + /** * When using shared tables that are referenced by foreign keys on local * tables you have to change the constraints on local tables. diff --git a/maintenance/sql.php b/maintenance/sql.php index 70f9aaad47..36e55f3eed 100644 --- a/maintenance/sql.php +++ b/maintenance/sql.php @@ -26,6 +26,7 @@ require_once __DIR__ . '/Maintenance.php'; use Wikimedia\Rdbms\ResultWrapper; use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\DBQueryError; /** * Maintenance script that sends SQL queries from the specified file to the database. diff --git a/maintenance/sqlite.inc b/maintenance/sqlite.inc index cbb0c7967a..117e9cc4b0 100644 --- a/maintenance/sqlite.inc +++ b/maintenance/sqlite.inc @@ -22,6 +22,7 @@ */ use Wikimedia\Rdbms\DatabaseSqlite; +use Wikimedia\Rdbms\DBError; /** * This class contains code common to different SQLite-related maintenance scripts diff --git a/maintenance/storage/trackBlobs.php b/maintenance/storage/trackBlobs.php index 4f22843056..b4514ecbdf 100644 --- a/maintenance/storage/trackBlobs.php +++ b/maintenance/storage/trackBlobs.php @@ -22,6 +22,8 @@ * @see wfWaitForSlaves() */ +use Wikimedia\Rdbms\DBConnectionError; + require __DIR__ . '/../commandLine.inc'; if ( count( $args ) < 1 ) { -- 2.20.1