'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',
'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',
'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',
* @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
};
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'] )
*/
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 );
/**
* @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' ) ) {
* @file
* @ingroup Database
*/
+
+namespace Wikimedia\Rdbms;
+
use Psr\Log\LoggerAwareInterface;
+use BagOStuff;
+use ILoadBalancer;
/**
* An interface for database load monitoring
* @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
$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']
* @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
* @file
* @ingroup Database
*/
+
+namespace Wikimedia\Rdbms;
+
use Psr\Log\LoggerInterface;
+use ILoadBalancer;
+use BagOStuff;
class LoadMonitorNull implements ILoadMonitor {
public function __construct(