},
'GenderCache' => function ( MediaWikiServices $services ) : GenderCache {
- return new GenderCache( $services->getNamespaceInfo() );
+ $nsInfo = $services->getNamespaceInfo();
+ // Database layer may be disabled, so processing without database connection
+ $dbLoadBalancer = $services->isServiceDisabled( 'DBLoadBalancer' )
+ ? null
+ : $services->getDBLoadBalancer();
+ return new GenderCache( $nsInfo, $dbLoadBalancer );
},
'HttpRequestFactory' =>
* @author Niklas Laxström
* @ingroup Cache
*/
+
use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\ILoadBalancer;
/**
* Caches user genders when needed to use correct namespace aliases.
/** @var NamespaceInfo */
private $nsInfo;
- public function __construct( NamespaceInfo $nsInfo = null ) {
+ /** @var ILoadBalancer|null */
+ private $loadBalancer;
+
+ public function __construct( NamespaceInfo $nsInfo = null, ILoadBalancer $loadBalancer = null ) {
$this->nsInfo = $nsInfo ?? MediaWikiServices::getInstance()->getNamespaceInfo();
+ $this->loadBalancer = $loadBalancer;
}
/**
return;
}
- $dbr = wfGetDB( DB_REPLICA );
+ // Only query database, when load balancer is provided by service wiring
+ // This maybe not happen when running as part of the installer
+ if ( $this->loadBalancer === null ) {
+ return;
+ }
+
+ $dbr = $this->loadBalancer->getConnectionRef( DB_REPLICA );
$table = [ 'user', 'user_properties' ];
$fields = [ 'user_name', 'up_value' ];
$conds = [ 'user_name' => $usersToCheck ];