[MediaWiki-commits] [Gerrit] mediawiki/core[master]: Move LBFactorySimple to /libs/rdbms

2016-09-17 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: Move LBFactorySimple to /libs/rdbms
..


Move LBFactorySimple to /libs/rdbms

* Refactored LBFactory a bit to make this possible.
* Move newChronologyProtector() up to LBFactory and
  make a lazy-loading method instead.
* Move appendPreShutdownTimeAsQuery() up to LBFactory.
* Inject the web request values for LBFactory from Setup.php.
* Remove unused laggedSlaveUsed() method.

Change-Id: Ie8a38a6f4d6359680eb6a5be24a34e30b9816479
---
M autoload.php
M includes/ServiceWiring.php
M includes/Setup.php
M includes/db/loadbalancer/LBFactoryMW.php
M includes/db/loadbalancer/LBFactoryMulti.php
D includes/db/loadbalancer/LBFactorySimple.php
M includes/libs/rdbms/lbfactory/LBFactory.php
A includes/libs/rdbms/lbfactory/LBFactorySimple.php
M tests/phpunit/includes/MediaWikiServicesTest.php
M tests/phpunit/includes/db/LBFactoryTest.php
10 files changed, 318 insertions(+), 285 deletions(-)

Approvals:
  Legoktm: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/autoload.php b/autoload.php
index 035c152..52c929a 100644
--- a/autoload.php
+++ b/autoload.php
@@ -660,7 +660,7 @@
'LBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactory.php',
'LBFactoryMW' => __DIR__ . '/includes/db/loadbalancer/LBFactoryMW.php',
'LBFactoryMulti' => __DIR__ . 
'/includes/db/loadbalancer/LBFactoryMulti.php',
-   'LBFactorySimple' => __DIR__ . 
'/includes/db/loadbalancer/LBFactorySimple.php',
+   'LBFactorySimple' => __DIR__ . 
'/includes/libs/rdbms/lbfactory/LBFactorySimple.php',
'LBFactorySingle' => __DIR__ . 
'/includes/db/loadbalancer/LBFactorySingle.php',
'LCStore' => __DIR__ . '/includes/cache/localisation/LCStore.php',
'LCStoreCDB' => __DIR__ . '/includes/cache/localisation/LCStoreCDB.php',
diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php
index 4ab412e..7a34b3a 100644
--- a/includes/ServiceWiring.php
+++ b/includes/ServiceWiring.php
@@ -43,15 +43,53 @@
 
 return [
'DBLoadBalancerFactory' => function( MediaWikiServices $services ) {
-   $config = $services->getMainConfig()->get( 'LBFactoryConf' );
+   $mainConfig = $services->getMainConfig();
 
-   $class = LBFactoryMW::getLBFactoryClass( $config );
-   if ( !isset( $config['readOnlyReason'] ) ) {
+   $lbConf = $mainConfig->get( 'LBFactoryConf' );
+   $lbConf += [
+   'localDomain' => new DatabaseDomain(
+   $mainConfig->get( 'DBname' ), null, 
$mainConfig->get( 'DBprefix' ) ),
// TODO: replace the global 
wfConfiguredReadOnlyReason() with a service.
-   $config['readOnlyReason'] = 
wfConfiguredReadOnlyReason();
+   'readOnlyReason' => wfConfiguredReadOnlyReason(),
+   ];
+
+   $class = LBFactoryMW::getLBFactoryClass( $lbConf );
+   if ( $class === 'LBFactorySimple' ) {
+   if ( is_array( $mainConfig->get( 'DBservers' ) ) ) {
+   foreach ( $mainConfig->get( 'DBservers' ) as $i 
=> $server ) {
+   $lbConf['servers'][$i] = $server + [
+   'schema' => $mainConfig->get( 
'DBmwschema' ),
+   'tablePrefix' => 
$mainConfig->get( 'DBprefix' ),
+   'flags' => DBO_DEFAULT,
+   'sqlMode' => $mainConfig->get( 
'SQLMode' ),
+   'utf8Mode' => $mainConfig->get( 
'DBmysql5' )
+   ];
+   }
+   } else {
+   $flags = DBO_DEFAULT;
+   $flags |= $mainConfig->get( 'DebugDumpSql' ) ? 
DBO_DEBUG : 0;
+   $flags |= $mainConfig->get( 'DBssl' ) ? DBO_SSL 
: 0;
+   $flags |= $mainConfig->get( 'DBcompress' ) ? 
DBO_COMPRESS : 0;
+   $lbConf['servers'] = [
+   [
+   'host' => $mainConfig->get( 
'DBserver' ),
+   'user' => $mainConfig->get( 
'DBuser' ),
+   'password' => $mainConfig->get( 
'DBpassword' ),
+   'dbname' => $mainConfig->get( 
'DBname' ),
+   'schema' => $mainConfig->get( 
'DBmwschema' ),
+   'tablePrefix' => 
$mainConfig->get( 'DBprefix' ),
+   'type' => $mainConfig->get( 
'DBtype' ),
+  

[MediaWiki-commits] [Gerrit] mediawiki/core[master]: Move LBFactorySimple to /libs/rdbms

2016-09-15 Thread Aaron Schulz (Code Review)
Aaron Schulz has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/310924

Change subject: Move LBFactorySimple to /libs/rdbms
..

Move LBFactorySimple to /libs/rdbms

* Refactored LBFactory a bit to make this possible.
* Move newChronologyProtector() up to LBFactory and
  make a lazy-loading method instead.
* Move appendPreShutdownTimeAsQuery() up to LBFactory.
* Inject the web request values for LBFactory from Setup.php.
* Remove unused laggedSlaveUsed() method.

Change-Id: Ie8a38a6f4d6359680eb6a5be24a34e30b9816479
---
M autoload.php
M includes/ServiceWiring.php
M includes/Setup.php
M includes/db/loadbalancer/LBFactoryMW.php
M includes/db/loadbalancer/LBFactoryMulti.php
M includes/libs/rdbms/lbfactory/LBFactory.php
R includes/libs/rdbms/lbfactory/LBFactorySimple.php
7 files changed, 146 insertions(+), 135 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/24/310924/1

diff --git a/autoload.php b/autoload.php
index 96c8190..15d1297 100644
--- a/autoload.php
+++ b/autoload.php
@@ -656,7 +656,7 @@
'LBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactory.php',
'LBFactoryMW' => __DIR__ . '/includes/db/loadbalancer/LBFactoryMW.php',
'LBFactoryMulti' => __DIR__ . 
'/includes/db/loadbalancer/LBFactoryMulti.php',
-   'LBFactorySimple' => __DIR__ . 
'/includes/db/loadbalancer/LBFactorySimple.php',
+   'LBFactorySimple' => __DIR__ . 
'/includes/libs/rdbms/lbfactory/LBFactorySimple.php',
'LBFactorySingle' => __DIR__ . 
'/includes/db/loadbalancer/LBFactorySingle.php',
'LCStore' => __DIR__ . '/includes/cache/localisation/LCStore.php',
'LCStoreCDB' => __DIR__ . '/includes/cache/localisation/LCStoreCDB.php',
diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php
index 4ab412e..f054533 100644
--- a/includes/ServiceWiring.php
+++ b/includes/ServiceWiring.php
@@ -43,15 +43,53 @@
 
 return [
'DBLoadBalancerFactory' => function( MediaWikiServices $services ) {
-   $config = $services->getMainConfig()->get( 'LBFactoryConf' );
+   $mainConfig = $services->getMainConfig();
 
-   $class = LBFactoryMW::getLBFactoryClass( $config );
-   if ( !isset( $config['readOnlyReason'] ) ) {
+   $lbConf = $mainConfig->get( 'LBFactoryConf' );
+   if ( !isset( $lbConf['readOnlyReason'] ) ) {
// TODO: replace the global 
wfConfiguredReadOnlyReason() with a service.
-   $config['readOnlyReason'] = 
wfConfiguredReadOnlyReason();
+   $lbConf['readOnlyReason'] = 
wfConfiguredReadOnlyReason();
}
 
-   return new $class( $config );
+   $class = LBFactoryMW::getLBFactoryClass( $lbConf );
+   if ( $class === 'LBFactorySimple' ) {
+   if ( is_array( $mainConfig->get( 'DBservers' ) ) ) {
+   foreach ( $mainConfig->get( 'DBservers' ) as $i 
=> $server ) {
+   $lbConf['servers'][$i] = $server + [
+   'schema' => $mainConfig->get( 
'DBmwschema' ),
+   'tablePrefix' => 
$mainConfig->get( 'DBprefix' ),
+   'flags' => DBO_DEFAULT,
+   ];
+   if ( $i == 0 ) {
+   
$lbConf['servers'][$i]['master'] = true;
+   } else {
+   
$lbConf['servers'][$i]['replica'] = true;
+   }
+   }
+   } else {
+   $flags = DBO_DEFAULT;
+   $flags |= $mainConfig->get( 'DebugDumpSql' ) ? 
DBO_DEBUG : 0;
+   $flags |= $mainConfig->get( 'DBssl' ) ? DBO_SSL 
: 0;
+   $flags |= $mainConfig->get( 'DBcompress' ) ? 
DBO_COMPRESS : 0;
+   $lbConf['servers'] = [
+   [
+   'host' => $mainConfig->get( 
'DBserver' ),
+   'user' => $mainConfig->get( 
'DBuser' ),
+   'password' => $mainConfig->get( 
'DBpassword' ),
+   'dbname' => $mainConfig->get( 
'DBname' ),
+   'schema' => $mainConfig->get( 
'DBmwschema' ),
+   'tablePrefix' => 
$mainConfig->get( 'DBprefix' ),
+   'type' => $mainConfig->get( 
'DBtype' ),
+