Cleanups to DatabaseMysqlBase
[lhc/web/wiklou.git] / includes / db / loadbalancer / LBFactorySimple.php
index c06b5b1..d937ddb 100644 (file)
@@ -24,7 +24,7 @@
 /**
  * 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[] */
@@ -46,7 +46,7 @@ class LBFactorySimple extends LBFactory {
         * @return LoadBalancer
         */
        public function newMainLB( $wiki = false ) {
-               global $wgDBservers;
+               global $wgDBservers, $wgDBprefix, $wgDBmwschema, $wgSQLMode, $wgDBmysql5;
 
                if ( is_array( $wgDBservers ) ) {
                        $servers = $wgDBservers;
@@ -54,9 +54,15 @@ class LBFactorySimple extends LBFactory {
                                if ( $i == 0 ) {
                                        $server['master'] = true;
                                } else {
-                                       $server['slave'] = true;
+                                       $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;
@@ -78,10 +84,14 @@ class LBFactorySimple extends LBFactory {
                                'user' => $wgDBuser,
                                'password' => $wgDBpassword,
                                'dbname' => $wgDBname,
+                               'schema' => $wgDBmwschema,
+                               'tablePrefix' => $wgDBprefix,
                                'type' => $wgDBtype,
                                'load' => 1,
                                'flags' => $flags,
-                               'master' => true
+                               'master' => true,
+                               'sqlMode' => $wgSQLMode,
+                               'utf8Mode' => $wgDBmysql5
                        ] ];
                }
 
@@ -95,7 +105,6 @@ class LBFactorySimple extends LBFactory {
        public function getMainLB( $wiki = false ) {
                if ( !isset( $this->mainLB ) ) {
                        $this->mainLB = $this->newMainLB( $wiki );
-                       $this->mainLB->parentInfo( [ 'id' => 'main' ] );
                        $this->chronProt->initLB( $this->mainLB );
                }
 
@@ -103,15 +112,15 @@ class LBFactorySimple extends LBFactory {
        }
 
        /**
-        * @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] );
@@ -122,10 +131,9 @@ class LBFactorySimple extends LBFactory {
         * @param bool|string $wiki
         * @return array
         */
-       public function &getExternalLB( $cluster, $wiki = false ) {
+       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] );
                }
 
@@ -133,15 +141,13 @@ class LBFactorySimple extends LBFactory {
        }
 
        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;