From 59053a07164f0119ed3f6261eb954dbe9d2ed4ce Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 26 Jan 2017 09:42:38 -0800 Subject: [PATCH] Move ChronologyProtector/TransactionProfiler to Rdbms namespace Change-Id: I37a655bd8bd267c9bc32028b55925b2dce527d33 --- autoload.php | 4 ++-- includes/MediaWiki.php | 1 + includes/libs/rdbms/ChronologyProtector.php | 9 ++++++++- includes/libs/rdbms/TransactionProfiler.php | 3 +++ includes/libs/rdbms/database/Database.php | 1 + includes/libs/rdbms/lbfactory/LBFactory.php | 2 ++ includes/libs/rdbms/loadbalancer/LoadBalancer.php | 1 + includes/objectcache/SqlBagOStuff.php | 1 + includes/profiler/Profiler.php | 1 + tests/phpunit/includes/db/DatabaseMysqlBaseTest.php | 2 ++ tests/phpunit/includes/db/DatabaseTestHelper.php | 2 ++ tests/phpunit/includes/db/LBFactoryTest.php | 3 +++ 12 files changed, 27 insertions(+), 3 deletions(-) diff --git a/autoload.php b/autoload.php index e7c97ad049..e3fee89ebc 100644 --- a/autoload.php +++ b/autoload.php @@ -247,7 +247,6 @@ $wgAutoloadLocalClasses = [ 'CheckStorage' => __DIR__ . '/maintenance/storage/checkStorage.php', 'CheckSyntax' => __DIR__ . '/maintenance/checkSyntax.php', 'CheckUsernames' => __DIR__ . '/maintenance/checkUsernames.php', - 'ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php', 'ClassCollector' => __DIR__ . '/includes/utils/AutoloadGenerator.php', 'CleanupAncientTables' => __DIR__ . '/maintenance/cleanupAncientTables.php', 'CleanupBlocks' => __DIR__ . '/maintenance/cleanupBlocks.php', @@ -1461,7 +1460,6 @@ $wgAutoloadLocalClasses = [ 'TrackBlobs' => __DIR__ . '/maintenance/storage/trackBlobs.php', 'TrackingCategories' => __DIR__ . '/includes/TrackingCategories.php', 'TraditionalImageGallery' => __DIR__ . '/includes/gallery/TraditionalImageGallery.php', - 'TransactionProfiler' => __DIR__ . '/includes/libs/rdbms/TransactionProfiler.php', 'TransformParameterError' => __DIR__ . '/includes/media/MediaTransformOutput.php', 'TransformTooBigImageAreaError' => __DIR__ . '/includes/media/MediaTransformOutput.php', 'TransformationalImageHandler' => __DIR__ . '/includes/media/TransformationalImageHandler.php', @@ -1586,8 +1584,10 @@ $wgAutoloadLocalClasses = [ 'WikiRevision' => __DIR__ . '/includes/import/WikiRevision.php', 'WikiStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php', 'WikiTextStructure' => __DIR__ . '/includes/content/WikiTextStructure.php', + 'Wikimedia\\Rdbms\\ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php', 'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php', 'Wikimedia\\Rdbms\\SessionConsistentConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManager.php', + 'Wikimedia\\Rdbms\\TransactionProfiler' => __DIR__ . '/includes/libs/rdbms/TransactionProfiler.php', 'WikitextContent' => __DIR__ . '/includes/content/WikitextContent.php', 'WikitextContentHandler' => __DIR__ . '/includes/content/WikitextContentHandler.php', 'WinCacheBagOStuff' => __DIR__ . '/includes/libs/objectcache/WinCacheBagOStuff.php', diff --git a/includes/MediaWiki.php b/includes/MediaWiki.php index faca533618..3e72d54100 100644 --- a/includes/MediaWiki.php +++ b/includes/MediaWiki.php @@ -22,6 +22,7 @@ use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ChronologyProtector; /** * The MediaWiki class is the helper class for the index.php entry point. diff --git a/includes/libs/rdbms/ChronologyProtector.php b/includes/libs/rdbms/ChronologyProtector.php index 88af1dbdf8..dfe950e405 100644 --- a/includes/libs/rdbms/ChronologyProtector.php +++ b/includes/libs/rdbms/ChronologyProtector.php @@ -20,9 +20,16 @@ * @file * @ingroup Database */ + +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; use Wikimedia\WaitConditionLoop; +use BagOStuff; +use DBMasterPos; +use ILoadBalancer; /** * Class for ensuring a consistent ordering of events as seen by the user, despite replication. @@ -72,7 +79,7 @@ class ChronologyProtector implements LoggerAwareInterface { $this->clientId = md5( $client['ip'] . "\n" . $client['agent'] ); $this->key = $store->makeGlobalKey( __CLASS__, $this->clientId ); $this->waitForPosTime = $posTime; - $this->logger = new \Psr\Log\NullLogger(); + $this->logger = new NullLogger(); } public function setLogger( LoggerInterface $logger ) { diff --git a/includes/libs/rdbms/TransactionProfiler.php b/includes/libs/rdbms/TransactionProfiler.php index bf5e299865..5d3534ffaa 100644 --- a/includes/libs/rdbms/TransactionProfiler.php +++ b/includes/libs/rdbms/TransactionProfiler.php @@ -22,9 +22,12 @@ * @author Aaron Schulz */ +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerInterface; use Psr\Log\LoggerAwareInterface; use Psr\Log\NullLogger; +use RuntimeException; /** * Helper class that detects high-contention DB queries via profiling calls diff --git a/includes/libs/rdbms/database/Database.php b/includes/libs/rdbms/database/Database.php index 69cf1ac356..68d500ba6c 100644 --- a/includes/libs/rdbms/database/Database.php +++ b/includes/libs/rdbms/database/Database.php @@ -26,6 +26,7 @@ use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerInterface; use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\TransactionProfiler; /** * Relational database abstraction object diff --git a/includes/libs/rdbms/lbfactory/LBFactory.php b/includes/libs/rdbms/lbfactory/LBFactory.php index 77d4aa993f..f580eeb006 100644 --- a/includes/libs/rdbms/lbfactory/LBFactory.php +++ b/includes/libs/rdbms/lbfactory/LBFactory.php @@ -23,6 +23,8 @@ use Psr\Log\LoggerInterface; use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\TransactionProfiler; +use Wikimedia\Rdbms\ChronologyProtector; /** * An interface for generating database load balancers diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index 95f55b6a86..78f905c76b 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -22,6 +22,7 @@ */ use Psr\Log\LoggerInterface; use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\TransactionProfiler; /** * Database connection, tracking, load balancing, and transaction manager for a cluster diff --git a/includes/objectcache/SqlBagOStuff.php b/includes/objectcache/SqlBagOStuff.php index de49fc3458..5fd3348a8c 100644 --- a/includes/objectcache/SqlBagOStuff.php +++ b/includes/objectcache/SqlBagOStuff.php @@ -23,6 +23,7 @@ use \MediaWiki\MediaWikiServices; use \Wikimedia\WaitConditionLoop; +use \Wikimedia\Rdbms\TransactionProfiler; /** * Class to store objects in the database diff --git a/includes/profiler/Profiler.php b/includes/profiler/Profiler.php index 8b4f01a306..252a227a1d 100644 --- a/includes/profiler/Profiler.php +++ b/includes/profiler/Profiler.php @@ -22,6 +22,7 @@ * @defgroup Profiler Profiler */ use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\TransactionProfiler; /** * Profiler base class that defines the interface and some trivial diff --git a/tests/phpunit/includes/db/DatabaseMysqlBaseTest.php b/tests/phpunit/includes/db/DatabaseMysqlBaseTest.php index 81b75dea17..3b69590878 100644 --- a/tests/phpunit/includes/db/DatabaseMysqlBaseTest.php +++ b/tests/phpunit/includes/db/DatabaseMysqlBaseTest.php @@ -25,6 +25,8 @@ * @copyright © 2013 Wikimedia Foundation Inc. */ +use Wikimedia\Rdbms\TransactionProfiler; + /** * Fake class around abstract class so we can call concrete methods. */ diff --git a/tests/phpunit/includes/db/DatabaseTestHelper.php b/tests/phpunit/includes/db/DatabaseTestHelper.php index c5603c4093..d689d50a42 100644 --- a/tests/phpunit/includes/db/DatabaseTestHelper.php +++ b/tests/phpunit/includes/db/DatabaseTestHelper.php @@ -1,5 +1,7 @@