MediaWiki
1.28.0
|
A multi-database, multi-master factory for Wikimedia and similar installations. More...
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) | |
![]() | |
__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 | |
getDBNameAndPrefix ($domain=false) | |
getSectionForDomain ($domain=false) | |
makeServerArray ($template, $loads, $groupLoads) | |
Make a server array as expected by LoadBalancer::__construct, using a template and load array. More... | |
newLoadBalancer ($template, $loads, $groupLoads, $readOnlyReason) | |
Make a new load balancer object based on template and load array. More... | |
reindexGroupLoads ($groupLoads) | |
Take a group load array indexed by group then server, and reindex it by server then group. More... | |
Private Attributes | |
array | $conf |
Load balancer factory configuration. More... | |
array | $externalLoads = [] |
A map of external storage cluster name to server load map. More... | |
array | $externalTemplateOverrides |
A set of server info keys overriding serverTemplate for external storage. More... | |
LoadBalancer[] | $extLBs = [] |
array | $groupLoadsByDB = [] |
A 3-d map giving server load ratios by DB name. More... | |
array | $groupLoadsBySection = [] |
A 3-d map giving server load ratios for each section and group. More... | |
array | $hostsByName = [] |
A map of hostname to IP address. More... | |
string | $lastDomain |
string | $lastSection |
string | $loadMonitorClass = 'LoadMonitor' |
LoadBalancer[] | $mainLBs = [] |
array | $masterTemplateOverrides |
An override array for all master servers. More... | |
array bool | $readOnlyBySection = [] |
A map of section name to read-only message. More... | |
array | $sectionLoads |
A 2-d map. More... | |
array | $sectionsByDB |
A map of database names to section names. More... | |
array[] | $serverTemplate |
Server info associative array. More... | |
array | $templateOverridesByCluster |
A 2-d map overriding the server info by external storage cluster. More... | |
array | $templateOverridesBySection |
A 2-d map overriding the server info by section. More... | |
array | $templateOverridesByServer |
A 2-d map overriding serverTemplate and externalTemplateOverrides on a server-by-server basis. More... | |
Additional Inherited Members | |
![]() | |
const | SHUTDOWN_CHRONPROT_ASYNC = 1 |
const | SHUTDOWN_CHRONPROT_SYNC = 2 |
const | SHUTDOWN_NO_CHRONPROT = 0 |
![]() | |
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... | |
![]() | |
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 |
A multi-database, multi-master factory for Wikimedia and similar installations.
Ignores the old configuration globals.
Definition at line 30 of file LBFactoryMulti.php.
LBFactoryMulti::__construct | ( | array | $conf | ) |
Template override precedence (highest => lowest):
Server configuration maps should be of the format Database::factory() requires. Additionally, 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).
array | $conf | Parameters of LBFactory::__construct() as well as:
|
Implements ILBFactory.
Definition at line 162 of file LBFactoryMulti.php.
LBFactoryMulti::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.
callable | $callback | |
array | $params |
Implements ILBFactory.
Definition at line 394 of file LBFactoryMulti.php.
|
private |
DatabaseDomain | string | bool | $domain | Domain ID, or false for the current domain |
Definition at line 379 of file LBFactoryMulti.php.
References false, and DatabaseDomain\newFromId().
Referenced by getSectionForDomain(), and newMainLB().
LBFactoryMulti::getExternalLB | ( | $cluster | ) |
Get a cached (tracked) load balancer for external storage.
string | $cluster | External storage cluster name |
Implements ILBFactory.
Definition at line 278 of file LBFactoryMulti.php.
References LBFactory\getChronologyProtector(), and newExternalLB().
LBFactoryMulti::getMainLB | ( | $domain = false | ) |
DatabaseDomain | string | bool | $domain | Domain ID, or false for the current domain |
Implements ILBFactory.
Definition at line 247 of file LBFactoryMulti.php.
References $section, LBFactory\getChronologyProtector(), getSectionForDomain(), and newMainLB().
|
private |
bool | string | $domain |
Definition at line 190 of file LBFactoryMulti.php.
References $lastSection, $section, getDBNameAndPrefix(), and list.
Referenced by getMainLB(), and newMainLB().
|
private |
Make a server array as expected by LoadBalancer::__construct, using a template and load array.
array | $template | |
array | $loads | |
array | $groupLoads |
Definition at line 318 of file LBFactoryMulti.php.
References $template, as, DBO_DEFAULT, and reindexGroupLoads().
Referenced by newLoadBalancer().
LBFactoryMulti::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.
string | $cluster | External storage cluster name |
Implements ILBFactory.
Definition at line 258 of file LBFactoryMulti.php.
References $serverTemplate, $template, and newLoadBalancer().
Referenced by getExternalLB().
|
private |
Make a new load balancer object based on template and load array.
array | $template | |
array | $loads | |
array | $groupLoads | |
string | bool | $readOnlyReason |
Definition at line 296 of file LBFactoryMulti.php.
References LBFactory\$readOnlyReason, $template, LBFactory\baseLoadBalancerParams(), LBFactory\initLoadBalancer(), and makeServerArray().
Referenced by newExternalLB(), and newMainLB().
LBFactoryMulti::newMainLB | ( | $domain = false | ) |
bool | string | $domain |
Implements ILBFactory.
Definition at line 210 of file LBFactoryMulti.php.
References LBFactory\$readOnlyReason, $section, $serverTemplate, $template, getDBNameAndPrefix(), getSectionForDomain(), list, and newLoadBalancer().
Referenced by getMainLB().
|
private |
Take a group load array indexed by group then server, and reindex it by server then group.
array | $groupLoads |
Definition at line 364 of file LBFactoryMulti.php.
References as.
Referenced by makeServerArray().
|
private |
Load balancer factory configuration.
Definition at line 89 of file LBFactoryMulti.php.
Referenced by __construct().
|
private |
A map of external storage cluster name to server load map.
Definition at line 58 of file LBFactoryMulti.php.
|
private |
A set of server info keys overriding serverTemplate for external storage.
Definition at line 64 of file LBFactoryMulti.php.
|
private |
Definition at line 95 of file LBFactoryMulti.php.
|
private |
A 3-d map giving server load ratios by DB name.
Definition at line 52 of file LBFactoryMulti.php.
|
private |
A 3-d map giving server load ratios for each section and group.
Definition at line 49 of file LBFactoryMulti.php.
|
private |
A map of hostname to IP address.
Definition at line 55 of file LBFactoryMulti.php.
|
private |
Definition at line 101 of file LBFactoryMulti.php.
|
private |
Definition at line 104 of file LBFactoryMulti.php.
Referenced by getSectionForDomain().
|
private |
Definition at line 98 of file LBFactoryMulti.php.
|
private |
Definition at line 92 of file LBFactoryMulti.php.
|
private |
An override array for all master servers.
Definition at line 80 of file LBFactoryMulti.php.
|
private |
A map of section name to read-only message.
Missing or false for read/write
Definition at line 86 of file LBFactoryMulti.php.
|
private |
A 2-d map.
For each section, gives a map of server names to load ratios
Definition at line 38 of file LBFactoryMulti.php.
|
private |
A map of database names to section names.
Definition at line 32 of file LBFactoryMulti.php.
|
private |
Server info associative array.
Definition at line 44 of file LBFactoryMulti.php.
Referenced by newExternalLB(), and newMainLB().
|
private |
A 2-d map overriding the server info by external storage cluster.
Definition at line 77 of file LBFactoryMulti.php.
|
private |
A 2-d map overriding the server info by section.
Definition at line 74 of file LBFactoryMulti.php.
|
private |
A 2-d map overriding serverTemplate and externalTemplateOverrides on a server-by-server basis.
Applies to both core and external storage
Definition at line 71 of file LBFactoryMulti.php.