* @ingroup Database
*/
class LBFactoryMulti extends LBFactory {
- // Required settings
-
/** @var array A map of database names to section names */
private $sectionsByDB;
public function __construct( array $conf ) {
parent::__construct( $conf );
- $this->chronProt = new ChronologyProtector;
$this->conf = $conf;
$required = array( 'sectionsByDB', 'sectionLoads', 'serverTemplate' );
$optional = array( 'groupLoadsBySection', 'groupLoadsByDB', 'hostsByName',
return new LoadBalancer( array(
'servers' => $this->makeServerArray( $template, $loads, $groupLoads ),
'loadMonitor' => $this->loadMonitorClass,
- 'readOnlyReason' => $readOnlyReason
+ 'readOnlyReason' => $readOnlyReason,
+ 'trxProfiler' => $this->trxProfiler
) );
}
}
}
- public function shutdown() {
- foreach ( $this->mainLBs as $lb ) {
- $this->chronProt->shutdownLB( $lb );
- }
- foreach ( $this->extLBs as $extLB ) {
- $this->chronProt->shutdownLB( $extLB );
+ public function shutdown( $flags = 0 ) {
+ if ( !( $flags & self::SHUTDOWN_NO_CHRONPROT ) ) {
+ $this->shutdownChronologyProtector( $this->chronProt );
}
- $this->chronProt->shutdown();
- $this->commitMasterChanges();
+ $this->commitMasterChanges( __METHOD__ ); // sanity
}
}