Aaron Schulz has uploaded a new change for review. https://gerrit.wikimedia.org/r/311303
Change subject: Move LoadBalancerSingle to /libs/rdbms ...................................................................... Move LoadBalancerSingle to /libs/rdbms Change-Id: I2e8177ca8fa6b9fcdec87e44f0cfeb11bb71f2bc --- M autoload.php M includes/db/loadbalancer/LBFactorySingle.php A includes/libs/rdbms/lbfactory/LBFactorySingle.php 3 files changed, 76 insertions(+), 45 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/03/311303/1 diff --git a/autoload.php b/autoload.php index 3da4010..c3c3b07 100644 --- a/autoload.php +++ b/autoload.php @@ -733,7 +733,7 @@ 'ListVariants' => __DIR__ . '/maintenance/language/listVariants.php', 'ListredirectsPage' => __DIR__ . '/includes/specials/SpecialListredirects.php', 'LoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/LoadBalancer.php', - 'LoadBalancerSingle' => __DIR__ . '/includes/db/loadbalancer/LBFactorySingle.php', + 'LoadBalancerSingle' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactorySingle.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', diff --git a/includes/db/loadbalancer/LBFactorySingle.php b/includes/db/loadbalancer/LBFactorySingle.php index 3937dfd..b760723 100644 --- a/includes/db/loadbalancer/LBFactorySingle.php +++ b/includes/db/loadbalancer/LBFactorySingle.php @@ -35,6 +35,10 @@ public function __construct( array $conf ) { parent::__construct( $conf ); + if ( !isset( $conf['connection'] ) ) { + throw new InvalidArgumentException( "Missing 'connection' argument." ); + } + $this->lb = new LoadBalancerSingle( array_merge( $this->baseLoadBalancerParams(), $conf ) ); } @@ -78,49 +82,5 @@ */ public function forEachLB( $callback, array $params = [] ) { call_user_func_array( $callback, array_merge( [ $this->lb ], $params ) ); - } -} - -/** - * Helper class for LBFactorySingle. - */ -class LoadBalancerSingle extends LoadBalancer { - /** @var IDatabase */ - private $db; - - /** - * @param array $params - */ - public function __construct( array $params ) { - $this->db = $params['connection']; - - parent::__construct( [ - 'servers' => [ - [ - 'type' => $this->db->getType(), - 'host' => $this->db->getServer(), - 'dbname' => $this->db->getDBname(), - 'load' => 1, - ] - ], - 'trxProfiler' => isset( $params['trxProfiler'] ) ? $params['trxProfiler'] : null, - 'srvCache' => isset( $params['srvCache'] ) ? $params['srvCache'] : null, - 'wanCache' => isset( $params['wanCache'] ) ? $params['wanCache'] : null - ] ); - - if ( isset( $params['readOnlyReason'] ) ) { - $this->db->setLBInfo( 'readOnlyReason', $params['readOnlyReason'] ); - } - } - - /** - * - * @param string $server - * @param bool $dbNameOverride - * - * @return IDatabase - */ - protected function reallyOpenConnection( $server, $dbNameOverride = false ) { - return $this->db; } } diff --git a/includes/libs/rdbms/lbfactory/LBFactorySingle.php b/includes/libs/rdbms/lbfactory/LBFactorySingle.php new file mode 100644 index 0000000..943fcf9 --- /dev/null +++ b/includes/libs/rdbms/lbfactory/LBFactorySingle.php @@ -0,0 +1,71 @@ +<?php +/** + * Simple generator of database connections that always returns the same object. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Database + */ + +/** + * Trivial LoadBalancer that always returns an injected connection handle + */ +class LoadBalancerSingle extends LoadBalancer { + /** @var IDatabase */ + private $db; + + /** + * @param array $params An associative array with one member: + * - connection: An IDatabase connection object + */ + public function __construct( array $params ) { + if ( !isset( $params['connection'] ) ) { + throw new InvalidArgumentException( "Missing 'connection' argument." ); + } + + $this->db = $params['connection']; + + parent::__construct( [ + 'servers' => [ + [ + 'type' => $this->db->getType(), + 'host' => $this->db->getServer(), + 'dbname' => $this->db->getDBname(), + 'load' => 1, + ] + ], + 'trxProfiler' => isset( $params['trxProfiler'] ) ? $params['trxProfiler'] : null, + 'srvCache' => isset( $params['srvCache'] ) ? $params['srvCache'] : null, + 'wanCache' => isset( $params['wanCache'] ) ? $params['wanCache'] : null + ] ); + + if ( isset( $params['readOnlyReason'] ) ) { + $this->db->setLBInfo( 'readOnlyReason', $params['readOnlyReason'] ); + } + } + + /** + * + * @param string $server + * @param bool $dbNameOverride + * + * @return IDatabase + */ + protected function reallyOpenConnection( $server, $dbNameOverride = false ) { + return $this->db; + } +} -- To view, visit https://gerrit.wikimedia.org/r/311303 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2e8177ca8fa6b9fcdec87e44f0cfeb11bb71f2bc Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Aaron Schulz <asch...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits