MediaWiki REL1_33
|
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. | |
getAllExternalLBs () | |
Get cached (tracked) load balancers for all external database clusters. | |
getAllMainLBs () | |
Get cached (tracked) load balancers for all main database clusters. | |
getExternalLB ( $cluster) | |
getMainLB ( $domain=false) | |
newExternalLB ( $cluster) | |
newMainLB ( $domain=false) | |
Public Member Functions inherited from Wikimedia\Rdbms\LBFactory | |
__destruct () | |
appendShutdownCPIndexAsQuery ( $url, $index) | |
Append ?cpPosIndex parameter to a URL for ChronologyProtector purposes if needed. | |
beginMasterChanges ( $fname=__METHOD__) | |
Flush any master transaction snapshots and set DBO_TRX (if DBO_DEFAULT is set) | |
closeAll () | |
Close all open database connections on all open load balancers. | |
commitAll ( $fname=__METHOD__, array $options=[]) | |
Commit open transactions on all connections. | |
commitAndWaitForReplication ( $fname, $ticket, array $opts=[]) | |
Convenience method for safely running commitMasterChanges()/waitForReplication() | |
commitMasterChanges ( $fname=__METHOD__, array $options=[]) | |
Commit changes and clear view snapshots on all master connections. | |
destroy () | |
Disables all load balancers. | |
disableChronologyProtection () | |
Disable the ChronologyProtector for all load balancers. | |
flushReplicaSnapshots ( $fname=__METHOD__) | |
Commit all replica DB transactions so as to flush any REPEATABLE-READ or SSI snapshot. | |
getChronologyProtectorTouched ( $dbName) | |
getEmptyTransactionTicket ( $fname) | |
Get a token asserting that no transaction writes are active. | |
getLocalDomainID () | |
Get the local (and default) database domain ID of connection handles. | |
hasMasterChanges () | |
Determine if any master connection has pending changes. | |
hasOrMadeRecentMasterChanges ( $age=null) | |
Determine if any master connection has pending/written changes from this request. | |
hasTransactionRound () | |
Check if an explicit transaction round is active. | |
isReadyForRoundOperations () | |
Check if transaction rounds can be started, committed, or rolled back right now. | |
laggedReplicaUsed () | |
Detemine if any lagged replica DB connection was used. | |
redefineLocalDomain ( $domain) | |
Close all connection and redefine the local domain for testing or schema creation. | |
resolveDomainID ( $domain) | |
rollbackMasterChanges ( $fname=__METHOD__) | |
Rollback changes on all master connections. | |
setAgentName ( $agent) | |
setDomainPrefix ( $prefix) | |
setIndexAliases (array $aliases) | |
Convert certain index names to alternative names before querying the DB. | |
setLocalDomainPrefix ( $prefix) | |
Set a new table prefix for the existing local domain ID for testing. | |
setRequestInfo (array $info) | |
setTableAliases (array $aliases) | |
Make certain table names use their own database, schema, and table prefix when passed into SQL queries pre-escaped and without a qualified database name. | |
setWaitForReplicationListener ( $name, callable $callback=null) | |
Add a callback to be run in every call to waitForReplication() before waiting. | |
shutdown ( $mode=self::SHUTDOWN_CHRONPROT_SYNC, callable $workCallback=null, &$cpIndex=null, &$cpClientId=null) | |
Prepare all tracked load balancers for shutdown. | |
waitForReplication (array $opts=[]) | |
Waits for the replica DBs to catch up to the current master position. | |
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. | |
newLoadBalancer ( $template, $loads, $groupLoads, $readOnlyReason) | |
Make a new load balancer object based on template and load array. | |
reindexGroupLoads ( $groupLoads) | |
Take a group load array indexed by group then server, and reindex it by server then group. | |
Private Attributes | |
array | $externalLoads = [] |
A map of external storage cluster name to server load map. | |
array | $externalTemplateOverrides |
A set of server info keys overriding serverTemplate for external storage. | |
LoadBalancer[] | $extLBs = [] |
array | $groupLoadsByDB = [] |
A 3-d map giving server load ratios by DB name. | |
array | $groupLoadsBySection = [] |
A 3-d map giving server load ratios for each section and group. | |
array | $hostsByName = [] |
A map of hostname to IP address. | |
string | $lastDomain |
string | $lastSection |
string | $loadMonitorClass = 'LoadMonitor' |
LoadBalancer[] | $mainLBs = [] |
array | $masterTemplateOverrides |
An override array for all master servers. | |
array bool | $readOnlyBySection = [] |
A map of section name to read-only message. | |
array | $sectionLoads |
A 2-d map. | |
array | $sectionsByDB |
A map of database names to section names. | |
array[] | $serverTemplate |
Server info associative array. | |
array | $templateOverridesByCluster |
A 2-d map overriding the server info by external storage cluster. | |
array | $templateOverridesBySection |
A 2-d map overriding the server info by section. | |
array | $templateOverridesByServer |
A 2-d map overriding serverTemplate and externalTemplateOverrides on a server-by-server basis. | |
Additional Inherited Members | |
Static Public Member Functions inherited from Wikimedia\Rdbms\LBFactory | |
static | getCPInfoFromCookieValue ( $value, $minTimestamp) |
static | makeCookieValueFromCPIndex ( $index, $time, $clientId) |
Public Attributes inherited from Wikimedia\Rdbms\LBFactory | |
const | ROUND_BEGINNING = 'within-begin' |
const | ROUND_COMMIT_CALLBACKS = 'within-commit-callbacks' |
const | ROUND_COMMITTING = 'within-commit' |
const | ROUND_CURSORY = 'cursory' |
const | ROUND_ROLLBACK_CALLBACKS = 'within-rollback-callbacks' |
const | ROUND_ROLLING_BACK = 'within-rollback' |
Public Attributes inherited from Wikimedia\Rdbms\ILBFactory | |
const | SHUTDOWN_CHRONPROT_ASYNC = 1 |
const | SHUTDOWN_CHRONPROT_SYNC = 2 |
const | SHUTDOWN_NO_CHRONPROT = 0 |
Protected Member Functions inherited from Wikimedia\Rdbms\LBFactory | |
baseLoadBalancerParams () | |
Base parameters to ILoadBalancer::__construct() | |
forEachLBCallMethod ( $methodName, array $args=[]) | |
Call a method of each tracked load balancer. | |
getChronologyProtector () | |
initLoadBalancer (ILoadBalancer $lb) | |
shutdownChronologyProtector (ChronologyProtector $cp, $workCallback, $mode, &$cpIndex=null) | |
Get and record all of the staged DB positions into persistent memory storage. | |
Protected Attributes inherited from Wikimedia\Rdbms\LBFactory | |
DatabaseDomain | $localDomain |
Local domain. | |
int null | $maxLag |
BagOStuff | $memStash |
string bool | $readOnlyReason = false |
Reason all LBs are read-only or false if not. | |
BagOStuff | $srvCache |
WANObjectCache | $wanCache |
A multi-database, multi-master factory for Wikimedia and similar installations.
Ignores the old configuration globals.
Definition at line 34 of file LBFactoryMulti.php.
Wikimedia\Rdbms\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:
|
Reimplemented from Wikimedia\Rdbms\LBFactory.
Definition at line 163 of file LBFactoryMulti.php.
References as.
Wikimedia\Rdbms\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 Wikimedia\Rdbms\ILBFactory.
Definition at line 399 of file LBFactoryMulti.php.
Wikimedia\Rdbms\LBFactoryMulti::getAllExternalLBs | ( | ) |
Get cached (tracked) load balancers for all external database clusters.
Implements Wikimedia\Rdbms\ILBFactory.
Definition at line 287 of file LBFactoryMulti.php.
References as, and Wikimedia\Rdbms\LBFactoryMulti\getExternalLB().
Wikimedia\Rdbms\LBFactoryMulti::getAllMainLBs | ( | ) |
Get cached (tracked) load balancers for all main database clusters.
Implements Wikimedia\Rdbms\ILBFactory.
Definition at line 276 of file LBFactoryMulti.php.
References $section, as, and Wikimedia\Rdbms\LBFactoryMulti\getMainLB().
|
private |
DatabaseDomain | string | bool | $domain | Domain ID, or false for the current domain |
Definition at line 384 of file LBFactoryMulti.php.
References false, and Wikimedia\Rdbms\DatabaseDomain\newFromId().
Referenced by Wikimedia\Rdbms\LBFactoryMulti\getSectionForDomain(), and Wikimedia\Rdbms\LBFactoryMulti\newMainLB().
Wikimedia\Rdbms\LBFactoryMulti::getExternalLB | ( | $cluster | ) |
string | $cluster |
Reimplemented from Wikimedia\Rdbms\LBFactory.
Definition at line 268 of file LBFactoryMulti.php.
References Wikimedia\Rdbms\LBFactoryMulti\newExternalLB().
Referenced by Wikimedia\Rdbms\LBFactoryMulti\getAllExternalLBs().
Wikimedia\Rdbms\LBFactoryMulti::getMainLB | ( | $domain = false | ) |
DatabaseDomain | string | bool | $domain | Domain ID, or false for the current domain |
Reimplemented from Wikimedia\Rdbms\LBFactory.
Definition at line 239 of file LBFactoryMulti.php.
References $section, Wikimedia\Rdbms\LBFactoryMulti\getSectionForDomain(), and Wikimedia\Rdbms\LBFactoryMulti\newMainLB().
Referenced by Wikimedia\Rdbms\LBFactoryMulti\getAllMainLBs().
|
private |
bool | string | $domain |
Definition at line 190 of file LBFactoryMulti.php.
References Wikimedia\Rdbms\LBFactoryMulti\$lastSection, $section, Wikimedia\Rdbms\LBFactoryMulti\getDBNameAndPrefix(), and list.
Referenced by Wikimedia\Rdbms\LBFactoryMulti\getMainLB(), and Wikimedia\Rdbms\LBFactoryMulti\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 327 of file LBFactoryMulti.php.
References $template, as, and Wikimedia\Rdbms\LBFactoryMulti\reindexGroupLoads().
Referenced by Wikimedia\Rdbms\LBFactoryMulti\newLoadBalancer().
Wikimedia\Rdbms\LBFactoryMulti::newExternalLB | ( | $cluster | ) |
string | $cluster |
Reimplemented from Wikimedia\Rdbms\LBFactory.
Definition at line 248 of file LBFactoryMulti.php.
References Wikimedia\Rdbms\LBFactoryMulti\$serverTemplate, $template, and Wikimedia\Rdbms\LBFactoryMulti\newLoadBalancer().
Referenced by Wikimedia\Rdbms\LBFactoryMulti\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 305 of file LBFactoryMulti.php.
References Wikimedia\Rdbms\LBFactory\$readOnlyReason, $template, Wikimedia\Rdbms\LBFactory\baseLoadBalancerParams(), Wikimedia\Rdbms\LBFactory\initLoadBalancer(), and Wikimedia\Rdbms\LBFactoryMulti\makeServerArray().
Referenced by Wikimedia\Rdbms\LBFactoryMulti\newExternalLB(), and Wikimedia\Rdbms\LBFactoryMulti\newMainLB().
Wikimedia\Rdbms\LBFactoryMulti::newMainLB | ( | $domain = false | ) |
bool | string | $domain |
Reimplemented from Wikimedia\Rdbms\LBFactory.
Definition at line 206 of file LBFactoryMulti.php.
References Wikimedia\Rdbms\LBFactory\$readOnlyReason, $section, Wikimedia\Rdbms\LBFactoryMulti\$serverTemplate, $template, Wikimedia\Rdbms\LBFactoryMulti\getDBNameAndPrefix(), Wikimedia\Rdbms\LBFactoryMulti\getSectionForDomain(), list, and Wikimedia\Rdbms\LBFactoryMulti\newLoadBalancer().
Referenced by Wikimedia\Rdbms\LBFactoryMulti\getMainLB().
|
private |
Take a group load array indexed by group then server, and reindex it by server then group.
array | $groupLoads |
Definition at line 369 of file LBFactoryMulti.php.
References as.
Referenced by Wikimedia\Rdbms\LBFactoryMulti\makeServerArray().
|
private |
A map of external storage cluster name to server load map.
Definition at line 62 of file LBFactoryMulti.php.
|
private |
A set of server info keys overriding serverTemplate for external storage.
Definition at line 68 of file LBFactoryMulti.php.
|
private |
Definition at line 96 of file LBFactoryMulti.php.
|
private |
A 3-d map giving server load ratios by DB name.
Definition at line 56 of file LBFactoryMulti.php.
|
private |
A 3-d map giving server load ratios for each section and group.
Definition at line 53 of file LBFactoryMulti.php.
|
private |
A map of hostname to IP address.
Definition at line 59 of file LBFactoryMulti.php.
|
private |
Definition at line 102 of file LBFactoryMulti.php.
|
private |
Definition at line 105 of file LBFactoryMulti.php.
Referenced by Wikimedia\Rdbms\LBFactoryMulti\getSectionForDomain().
|
private |
Definition at line 99 of file LBFactoryMulti.php.
|
private |
Definition at line 93 of file LBFactoryMulti.php.
|
private |
An override array for all master servers.
Definition at line 84 of file LBFactoryMulti.php.
|
private |
A map of section name to read-only message.
Missing or false for read/write
Definition at line 90 of file LBFactoryMulti.php.
|
private |
A 2-d map.
For each section, gives a map of server names to load ratios
Definition at line 42 of file LBFactoryMulti.php.
|
private |
A map of database names to section names.
Definition at line 36 of file LBFactoryMulti.php.
|
private |
Server info associative array.
Definition at line 48 of file LBFactoryMulti.php.
Referenced by Wikimedia\Rdbms\LBFactoryMulti\newExternalLB(), and Wikimedia\Rdbms\LBFactoryMulti\newMainLB().
|
private |
A 2-d map overriding the server info by external storage cluster.
Definition at line 81 of file LBFactoryMulti.php.
|
private |
A 2-d map overriding the server info by section.
Definition at line 78 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 75 of file LBFactoryMulti.php.