/**
* A simple single-master LBFactory that gets its configuration from the b/c globals
*/
-class LBFactorySimple extends LBFactory {
+class LBFactorySimple extends LBFactoryMW {
/** @var LoadBalancer */
private $mainLB;
/** @var LoadBalancer[] */
* @return LoadBalancer
*/
public function newMainLB( $wiki = false ) {
- global $wgDBservers;
+ global $wgDBservers, $wgDBprefix, $wgDBmwschema, $wgSQLMode, $wgDBmysql5;
if ( is_array( $wgDBservers ) ) {
$servers = $wgDBservers;
} else {
$server['replica'] = true;
}
- $server += [ 'flags' => DBO_DEFAULT ];
+ $server += [
+ 'schema' => $wgDBmwschema,
+ 'tablePrefix' => $wgDBprefix,
+ 'flags' => DBO_DEFAULT,
+ 'sqlMode' => $wgSQLMode,
+ 'utf8Mode' => $wgDBmysql5
+ ];
}
} else {
global $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, $wgDBtype, $wgDebugDumpSql;
'user' => $wgDBuser,
'password' => $wgDBpassword,
'dbname' => $wgDBname,
+ 'schema' => $wgDBmwschema,
+ 'tablePrefix' => $wgDBprefix,
'type' => $wgDBtype,
'load' => 1,
'flags' => $flags,
- 'master' => true
+ 'master' => true,
+ 'sqlMode' => $wgSQLMode,
+ 'utf8Mode' => $wgDBmysql5
] ];
}
public function getMainLB( $wiki = false ) {
if ( !isset( $this->mainLB ) ) {
$this->mainLB = $this->newMainLB( $wiki );
- $this->mainLB->parentInfo( [ 'id' => 'main' ] );
$this->chronProt->initLB( $this->mainLB );
}
}
/**
- * @throws MWException
* @param string $cluster
* @param bool|string $wiki
* @return LoadBalancer
+ * @throws InvalidArgumentException
*/
protected function newExternalLB( $cluster, $wiki = false ) {
global $wgExternalServers;
if ( !isset( $wgExternalServers[$cluster] ) ) {
- throw new MWException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
+ throw new InvalidArgumentException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
}
return $this->newLoadBalancer( $wgExternalServers[$cluster] );
public function getExternalLB( $cluster, $wiki = false ) {
if ( !isset( $this->extLBs[$cluster] ) ) {
$this->extLBs[$cluster] = $this->newExternalLB( $cluster, $wiki );
- $this->extLBs[$cluster]->parentInfo( [ 'id' => "ext-$cluster" ] );
$this->chronProt->initLB( $this->extLBs[$cluster] );
}
}
private function newLoadBalancer( array $servers ) {
- $lb = new LoadBalancer( [
- 'servers' => $servers,
- 'loadMonitor' => $this->loadMonitorClass,
- 'readOnlyReason' => $this->readOnlyReason,
- 'trxProfiler' => $this->trxProfiler,
- 'srvCache' => $this->srvCache,
- 'wanCache' => $this->wanCache
- ] );
-
+ $lb = new LoadBalancer( array_merge(
+ $this->baseLoadBalancerParams(),
+ [
+ 'servers' => $servers,
+ 'loadMonitor' => $this->loadMonitorClass,
+ ]
+ ) );
$this->initLoadBalancer( $lb );
return $lb;