MediaWiki  1.28.1
LBFactorySimple Class Reference

A simple single-master LBFactory that gets its configuration from the b/c globals. More...

Inheritance diagram for LBFactorySimple:
Collaboration diagram for LBFactorySimple:

Public Member Functions

 __construct (array $conf)
 
 forEachLB ($callback, array $params=[])
 Execute a function for each tracked load balancer The callback is called with the load balancer as the first parameter, and $params passed as the subsequent parameters. More...
 
 getExternalLB ($cluster)
 Get a cached (tracked) load balancer for external storage. More...
 
 getMainLB ($domain=false)
 
 newExternalLB ($cluster)
 Create a new load balancer for external storage. More...
 
 newMainLB ($domain=false)
 
- Public Member Functions inherited from LBFactory
 __construct (array $conf)
 Construct a manager of ILoadBalancer objects. More...
 
 __destruct ()
 
 appendPreShutdownTimeAsQuery ($url, $time)
 Append ?cpPosTime parameter to a URL for ChronologyProtector purposes if needed. More...
 
 beginMasterChanges ($fname=__METHOD__)
 Flush any master transaction snapshots and set DBO_TRX (if DBO_DEFAULT is set) More...
 
 closeAll ()
 Close all open database connections on all open load balancers. More...
 
 commitAll ($fname=__METHOD__, array $options=[])
 Commit open transactions on all connections. More...
 
 commitAndWaitForReplication ($fname, $ticket, array $opts=[])
 Convenience method for safely running commitMasterChanges()/waitForReplication() More...
 
 commitMasterChanges ($fname=__METHOD__, array $options=[])
 Commit changes on all master connections. More...
 
 destroy ()
 Disables all load balancers. More...
 
 disableChronologyProtection ()
 Disable the ChronologyProtector for all load balancers. More...
 
 flushReplicaSnapshots ($fname=__METHOD__)
 Commit all replica DB transactions so as to flush any REPEATABLE-READ or SSI snapshot. More...
 
 getChronologyProtectorTouched ($dbName)
 
 getEmptyTransactionTicket ($fname)
 Get a token asserting that no transaction writes are active. More...
 
 getExternalLB ($cluster)
 
 getMainLB ($domain=false)
 
 hasMasterChanges ()
 Determine if any master connection has pending changes. More...
 
 hasOrMadeRecentMasterChanges ($age=null)
 Determine if any master connection has pending/written changes from this request. More...
 
 laggedReplicaUsed ()
 Detemine if any lagged replica DB connection was used. More...
 
 newExternalLB ($cluster)
 
 newMainLB ($domain=false)
 
 rollbackMasterChanges ($fname=__METHOD__)
 Rollback changes on all master connections. More...
 
 setAgentName ($agent)
 
 setDomainPrefix ($prefix)
 Set a new table prefix for the existing local domain ID for testing. More...
 
 setRequestInfo (array $info)
 
 setWaitForReplicationListener ($name, callable $callback=null)
 Add a callback to be run in every call to waitForReplication() before waiting. More...
 
 shutdown ($mode=self::SHUTDOWN_CHRONPROT_SYNC, callable $workCallback=null)
 Prepare all tracked load balancers for shutdown. More...
 
 waitForReplication (array $opts=[])
 Waits for the replica DBs to catch up to the current master position. More...
 

Private Member Functions

 newLoadBalancer (array $servers)
 

Private Attributes

array[] $externalClusters = []
 Map of (cluster => (server index => server config)) More...
 
LoadBalancer[] $extLBs = []
 
string $loadMonitorClass
 
LoadBalancer $mainLB
 
array[] $servers = []
 Map of (server index => server config) More...
 

Additional Inherited Members

- Public Attributes inherited from ILBFactory
const SHUTDOWN_CHRONPROT_ASYNC = 1
 
const SHUTDOWN_CHRONPROT_SYNC = 2
 
const SHUTDOWN_NO_CHRONPROT = 0
 
- Protected Member Functions inherited from LBFactory
 baseLoadBalancerParams ()
 Base parameters to LoadBalancer::__construct() More...
 
 forEachLBCallMethod ($methodName, array $args=[])
 Call a method of each tracked load balancer. More...
 
 getChronologyProtector ()
 
 getScopedPHPBehaviorForCommit ()
 Make PHP ignore user aborts/disconnects until the returned value leaves scope. More...
 
 initLoadBalancer (ILoadBalancer $lb)
 
 shutdownChronologyProtector (ChronologyProtector $cp, $workCallback, $mode)
 Get and record all of the staged DB positions into persistent memory storage. More...
 
- Protected Attributes inherited from LBFactory
string $agent
 Agent name for query profiling. More...
 
ChronologyProtector $chronProt
 
bool $cliMode
 Whether this PHP instance is for a CLI script. More...
 
LoggerInterface $connLogger
 
callable $errorLogger
 Error logger. More...
 
string $hostname
 Local hostname of the app server. More...
 
DatabaseDomain $localDomain
 Local domain. More...
 
BagOStuff $memCache
 
LoggerInterface $perfLogger
 
object string $profiler
 Class name or object With profileIn/profileOut methods. More...
 
LoggerInterface $queryLogger
 
string bool $readOnlyReason = false
 Reason all LBs are read-only or false if not. More...
 
callable[] $replicationWaitCallbacks = []
 
LoggerInterface $replLogger
 
array $requestInfo
 Web request information about the client. More...
 
BagOStuff $srvCache
 
mixed $ticket
 
TransactionProfiler $trxProfiler
 
string bool $trxRoundId = false
 String if a requested DBO_TRX transaction round is active. More...
 
WANObjectCache $wanCache
 

Detailed Description

A simple single-master LBFactory that gets its configuration from the b/c globals.

Definition at line 27 of file LBFactorySimple.php.

Constructor & Destructor Documentation

LBFactorySimple::__construct ( array  $conf)
See also
LBFactory::__construct()
Parameters
array$confParameters of LBFactory::__construct() as well as:
  • servers : list of server configuration maps to Database::factory(). Additionally, the server maps should have a 'load' key, which is used to decide how often clients connect to one server verses the others. A 'max lag' key should also be set on server maps, indicating how stale the data can be before the load balancer tries to avoid using it. The map can have 'is static' set to disable blocking replication sync checks (intended for archive servers with unchanging data).
  • externalClusters : map of cluster names to server arrays. The servers arrays have the same format as "servers" above.

Implements ILBFactory.

Definition at line 53 of file LBFactorySimple.php.

References as, and servers.

Member Function Documentation

LBFactorySimple::forEachLB (   $callback,
array  $params = [] 
)

Execute a function for each tracked load balancer The callback is called with the load balancer as the first parameter, and $params passed as the subsequent parameters.

Parameters
callable$callback
array$params

Implements ILBFactory.

Definition at line 132 of file LBFactorySimple.php.

References $params, and as.

LBFactorySimple::getExternalLB (   $cluster)

Get a cached (tracked) load balancer for external storage.

Parameters
string$clusterExternal storage cluster name
Returns
ILoadBalancer

Implements ILBFactory.

Definition at line 102 of file LBFactorySimple.php.

References LBFactory\getChronologyProtector(), and newExternalLB().

LBFactorySimple::getMainLB (   $domain = false)
Parameters
bool | string$domain
Returns
LoadBalancer

Implements ILBFactory.

Definition at line 85 of file LBFactorySimple.php.

References $mainLB, LBFactory\getChronologyProtector(), and newMainLB().

LBFactorySimple::newExternalLB (   $cluster)

Create a new load balancer for external storage.

The resulting object will be untracked, not chronology-protected, and the caller is responsible for cleaning it up.

This method is for only advanced usage and callers should almost always use getExternalLB() instead. This method can be useful when a table is used as a key/value store. In that cases, one might want to query it in autocommit mode (DBO_TRX off) but still use DBO_TRX transaction rounds on other tables.

Parameters
string$clusterExternal storage cluster name
Returns
ILoadBalancer

Implements ILBFactory.

Definition at line 94 of file LBFactorySimple.php.

References newLoadBalancer().

Referenced by getExternalLB().

LBFactorySimple::newLoadBalancer ( array  $servers)
private
LBFactorySimple::newMainLB (   $domain = false)
Parameters
bool | string$domain
Returns
LoadBalancer

Implements ILBFactory.

Definition at line 77 of file LBFactorySimple.php.

References newLoadBalancer(), and servers.

Referenced by getMainLB().

Member Data Documentation

array [] LBFactorySimple::$externalClusters = []
private

Map of (cluster => (server index => server config))

Definition at line 36 of file LBFactorySimple.php.

LoadBalancer [] LBFactorySimple::$extLBs = []
private

Definition at line 31 of file LBFactorySimple.php.

string LBFactorySimple::$loadMonitorClass
private

Definition at line 39 of file LBFactorySimple.php.

LoadBalancer LBFactorySimple::$mainLB
private

Definition at line 29 of file LBFactorySimple.php.

Referenced by getMainLB().

array [] LBFactorySimple::$servers = []
private

Map of (server index => server config)

Definition at line 34 of file LBFactorySimple.php.


The documentation for this class was generated from the following file: