X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fdb%2FMWLBFactory.php;h=b4e782b62f524a0b9a93e43278b175a5deb714c7;hp=80eb2f70fb0d32f5f7ab0ff06cfbefd51ac83b18;hb=88e3a888cc6823f11df79ac53eb963a7e4d2871a;hpb=1c7a8c1d25880c9fba972e4b019341fdbffff9f8 diff --git a/includes/db/MWLBFactory.php b/includes/db/MWLBFactory.php index 80eb2f70fb..b4e782b62f 100644 --- a/includes/db/MWLBFactory.php +++ b/includes/db/MWLBFactory.php @@ -23,7 +23,6 @@ use MediaWiki\Config\ServiceOptions; use MediaWiki\Logger\LoggerFactory; -use Wikimedia\Rdbms\LBFactory; use Wikimedia\Rdbms\DatabaseDomain; /** @@ -36,12 +35,10 @@ abstract class MWLBFactory { private static $loggedDeprecations = []; /** - * TODO Make this a const when HHVM support is dropped (T192166) - * * @var array * @since 1.34 */ - public static $applyDefaultConfigOptions = [ + public const APPLY_DEFAULT_CONFIG_OPTIONS = [ 'DBcompress', 'DBDefaultGroup', 'DBmwschema', @@ -66,7 +63,7 @@ abstract class MWLBFactory { * @param array $lbConf Config for LBFactory::__construct() * @param ServiceOptions $options * @param ConfiguredReadOnlyMode $readOnlyMode - * @param BagOStuff $srvCace + * @param BagOStuff $srvCache * @param BagOStuff $mainStash * @param WANObjectCache $wanCache * @return array @@ -76,11 +73,11 @@ abstract class MWLBFactory { array $lbConf, ServiceOptions $options, ConfiguredReadOnlyMode $readOnlyMode, - BagOStuff $srvCace, + BagOStuff $srvCache, BagOStuff $mainStash, WANObjectCache $wanCache ) { - $options->assertRequiredOptions( self::$applyDefaultConfigOptions ); + $options->assertRequiredOptions( self::APPLY_DEFAULT_CONFIG_OPTIONS ); global $wgCommandLineMode; @@ -159,7 +156,7 @@ abstract class MWLBFactory { $options->get( 'DBprefix' ) ); - $lbConf = self::injectObjectCaches( $lbConf, $srvCace, $mainStash, $wanCache ); + $lbConf = self::injectObjectCaches( $lbConf, $srvCache, $mainStash, $wanCache ); return $lbConf; } @@ -199,13 +196,14 @@ abstract class MWLBFactory { $server += [ 'schema' => $options->get( 'DBmwschema' ) ]; } - $flags = DBO_DEFAULT; - $flags |= $options->get( 'DebugDumpSql' ) ? DBO_DEBUG : 0; - $flags |= $options->get( 'DebugLogFile' ) ? DBO_DEBUG : 0; + $flags = $server['flags'] ?? DBO_DEFAULT; + if ( $options->get( 'DebugDumpSql' ) || $options->get( 'DebugLogFile' ) ) { + $flags |= DBO_DEBUG; + } + $server['flags'] = $flags; $server += [ 'tablePrefix' => $options->get( 'DBprefix' ), - 'flags' => $flags, 'sqlMode' => $options->get( 'SQLMode' ), ]; @@ -222,6 +220,11 @@ abstract class MWLBFactory { private static function injectObjectCaches( array $lbConf, BagOStuff $sCache, BagOStuff $mStash, WANObjectCache $wCache ) { + // Fallback if APC style caching is not an option + if ( $sCache instanceof EmptyBagOStuff ) { + $sCache = new HashBagOStuff( [ 'maxKeys' => 100 ] ); + } + // Use APC/memcached style caching, but avoids loops with CACHE_DB (T141804) if ( $sCache->getQoS( $sCache::ATTR_EMULATION ) > $sCache::QOS_EMULATION_SQL ) { $lbConf['srvCache'] = $sCache; @@ -354,35 +357,6 @@ abstract class MWLBFactory { return $class; } - /** - * @param LBFactory $lbFactory - * @param string $dbType 'mysql', 'sqlite', etc. - * @internal For use with service wiring - */ - public static function setSchemaAliases( LBFactory $lbFactory, $dbType ) { - if ( $dbType === 'mysql' ) { - /** - * When SQLite indexes were introduced in r45764, it was noted that - * SQLite requires index names to be unique within the whole database, - * not just within a schema. As discussed in CR r45819, to avoid the - * need for a schema change on existing installations, the indexes - * were implicitly mapped from the new names to the old names. - * - * This mapping can be removed if DB patches are introduced to alter - * the relevant tables in existing installations. Note that because - * this index mapping applies to table creation, even new installations - * of MySQL have the old names (except for installations created during - * a period where this mapping was inappropriately removed, see - * T154872). - */ - $lbFactory->setIndexAliases( [ - 'ar_usertext_timestamp' => 'usertext_timestamp', - 'un_user_id' => 'user_id', - 'un_user_ip' => 'user_ip', - ] ); - } - } - /** * Log a database deprecation warning * @param string $msg Deprecation message