From 2c7b26c169713c856248827820f1b1e39a3ab57a Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 26 Jan 2017 09:59:18 -0800 Subject: [PATCH] Move LoadMonitor to Rdbms namespace Change-Id: Icc178acb5ba0e21d1a8e857c43724c694c7ebeb1 --- autoload.php | 8 ++++---- .../libs/rdbms/loadbalancer/LoadBalancer.php | 17 +++++++++++++++-- .../libs/rdbms/loadmonitor/ILoadMonitor.php | 5 +++++ includes/libs/rdbms/loadmonitor/LoadMonitor.php | 8 +++++++- .../libs/rdbms/loadmonitor/LoadMonitorMySQL.php | 6 ++++++ .../libs/rdbms/loadmonitor/LoadMonitorNull.php | 5 +++++ 6 files changed, 42 insertions(+), 7 deletions(-) diff --git a/autoload.php b/autoload.php index a6840b4fb7..3a4ce6227f 100644 --- a/autoload.php +++ b/autoload.php @@ -597,7 +597,6 @@ $wgAutoloadLocalClasses = [ 'IJobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php', 'ILBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/ILBFactory.php', 'ILoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/ILoadBalancer.php', - 'ILoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/ILoadMonitor.php', 'ILocalizedException' => __DIR__ . '/includes/exception/LocalizedException.php', 'IMaintainableDatabase' => __DIR__ . '/includes/libs/rdbms/database/IMaintainableDatabase.php', 'IP' => __DIR__ . '/includes/libs/IP.php', @@ -746,9 +745,6 @@ $wgAutoloadLocalClasses = [ 'ListredirectsPage' => __DIR__ . '/includes/specials/SpecialListredirects.php', 'LoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/LoadBalancer.php', 'LoadBalancerSingle' => __DIR__ . '/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php', - 'LoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitor.php', - 'LoadMonitorMySQL' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php', - 'LoadMonitorNull' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php', 'LocalFile' => __DIR__ . '/includes/filerepo/file/LocalFile.php', 'LocalFileDeleteBatch' => __DIR__ . '/includes/filerepo/file/LocalFile.php', 'LocalFileLockError' => __DIR__ . '/includes/filerepo/file/LocalFile.php', @@ -1589,6 +1585,10 @@ $wgAutoloadLocalClasses = [ '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\\ILoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/ILoadMonitor.php', + 'Wikimedia\\Rdbms\\LoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitor.php', + 'Wikimedia\\Rdbms\\LoadMonitorMySQL' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php', + 'Wikimedia\\Rdbms\\LoadMonitorNull' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitorNull.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', diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index 78f905c76b..baac3d00f8 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -21,8 +21,10 @@ * @ingroup Database */ use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; use Wikimedia\ScopedCallback; use Wikimedia\Rdbms\TransactionProfiler; +use Wikimedia\Rdbms\ILoadMonitor; /** * Database connection, tracking, load balancing, and transaction manager for a cluster @@ -195,7 +197,7 @@ class LoadBalancer implements ILoadBalancer { }; foreach ( [ 'replLogger', 'connLogger', 'queryLogger', 'perfLogger' ] as $key ) { - $this->$key = isset( $params[$key] ) ? $params[$key] : new \Psr\Log\NullLogger(); + $this->$key = isset( $params[$key] ) ? $params[$key] : new NullLogger(); } $this->host = isset( $params['hostname'] ) @@ -212,7 +214,17 @@ class LoadBalancer implements ILoadBalancer { */ private function getLoadMonitor() { if ( !isset( $this->loadMonitor ) ) { + $compat = [ + 'LoadMonitor' => Wikimedia\Rdbms\LoadMonitor::class, + 'LoadMonitorNull' => Wikimedia\Rdbms\LoadMonitorNull::class, + 'LoadMonitorMySQL' => Wikimedia\Rdbms\LoadMonitorMySQL::class, + ]; + $class = $this->loadMonitorConfig['class']; + if ( isset( $compat[$class] ) ) { + $class = $compat[$class]; + } + $this->loadMonitor = new $class( $this, $this->srvCache, $this->memCache, $this->loadMonitorConfig ); $this->loadMonitor->setLogger( $this->replLogger ); @@ -1472,8 +1484,9 @@ class LoadBalancer implements ILoadBalancer { /** * @param IDatabase $conn - * @param DBMasterPos|false $pos + * @param DBMasterPos|bool $pos * @param int $timeout + * @return bool */ public function safeWaitForMasterPos( IDatabase $conn, $pos = false, $timeout = 10 ) { if ( $this->getServerCount() <= 1 || !$conn->getLBInfo( 'replica' ) ) { diff --git a/includes/libs/rdbms/loadmonitor/ILoadMonitor.php b/includes/libs/rdbms/loadmonitor/ILoadMonitor.php index 14a52c5a8c..38097fc87b 100644 --- a/includes/libs/rdbms/loadmonitor/ILoadMonitor.php +++ b/includes/libs/rdbms/loadmonitor/ILoadMonitor.php @@ -20,7 +20,12 @@ * @file * @ingroup Database */ + +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerAwareInterface; +use BagOStuff; +use ILoadBalancer; /** * An interface for database load monitoring diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitor.php b/includes/libs/rdbms/loadmonitor/LoadMonitor.php index da4909d77f..f1a6d07ccb 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitor.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitor.php @@ -19,8 +19,14 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; use Wikimedia\ScopedCallback; +use ILoadBalancer; +use IDatabase; +use BagOStuff; /** * Basic DB load monitor with no external dependencies @@ -49,7 +55,7 @@ class LoadMonitor implements ILoadMonitor { $this->parent = $lb; $this->srvCache = $srvCache; $this->mainCache = $cache; - $this->replLogger = new \Psr\Log\NullLogger(); + $this->replLogger = new NullLogger(); $this->movingAveRatio = isset( $options['movingAveRatio'] ) ? $options['movingAveRatio'] diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php b/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php index e3747943c1..afb3a23662 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php @@ -19,6 +19,12 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + +use ILoadBalancer; +use IDatabase; +use BagOStuff; + /** * Basic MySQL load monitor with no external dependencies * Uses memcached to cache the replication lag for a short time diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php b/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php index c4e25dc24a..0a84e333b8 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php @@ -18,7 +18,12 @@ * @file * @ingroup Database */ + +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerInterface; +use ILoadBalancer; +use BagOStuff; class LoadMonitorNull implements ILoadMonitor { public function __construct( -- 2.20.1