[MediaWiki-commits] [Gerrit] mediawiki/core[master]: Move LBFactorySimple to /libs/rdbms
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
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' ), +