MediaWiki master
|
LoadBalancer manager for sites with one "main" cluster using only injected database connections. More...
Inherits Wikimedia\Rdbms\LBFactory.
Public Member Functions | |
__construct (array $conf) | |
__destruct () | |
getAllExternalLBs () | |
Get the tracked load balancer instances for all external clusters. | |
getAllMainLBs () | |
Get the tracked load balancer instances for all main clusters. | |
getExternalLB ( $cluster) | |
Get the tracked load balancer instance for an external cluster. | |
getMainLB ( $domain=false) | |
Get the tracked load balancer instance for the main cluster that handles the given domain. | |
newExternalLB ( $cluster) | |
Create a new load balancer instance for an external cluster. | |
newMainLB ( $domain=false) | |
Create a new load balancer instance for the main cluster that handles the given domain. | |
![]() | |
autoReconfigure () | |
Reload config using the callback passed defined $config['configCallback']. | |
beginPrimaryChanges ( $fname=__METHOD__) | |
Wrap subsequent queries for all transaction round aware primary connections in a transaction. | |
closeAll ( $fname=__METHOD__) | |
Close all connections on instantiated tracked load balancer instances. | |
commitAndWaitForReplication ( $fname, $ticket, array $opts=[]) | |
Commit primary DB transactions and wait for replication (if $ticket indicates it is safe). | |
commitPrimaryChanges ( $fname=__METHOD__, int $maxWriteDuration=0) | |
Commit all primary connection transactions and flush all replica connection transactions. | |
destroy () | |
Close all connections and make further attempts to open connections result in DBAccessError. | |
disableChronologyProtection () | |
Disable the ChronologyProtector on all instantiated tracked load balancer instances. | |
flushPrimarySessions ( $fname=__METHOD__) | |
Release important session-level state (named lock, table locks) as post-rollback cleanup. | |
flushReplicaSnapshots ( $fname=__METHOD__) | |
Commit all replica database server transactions, clearing any point-in-time view snapshots. | |
getAllLBs () | |
Get all tracked load balancer instances (generator) | |
getAutoCommitPrimaryConnection ( $domain=false) | |
Like IConnectionProvider::getPrimaryDatabase() but with AUTOCOMMIT mode. | |
getEmptyTransactionTicket ( $fname) | |
Get a token asserting that no write transactions are active on tracked connections. | |
getLoadBalancer ( $domain=false) | |
Get the tracked load balancer instance for a given domain. | |
getLocalDomainID () | |
Get the local (and default) database domain ID of connection handles. | |
getMappedDomain ( $domain) | |
getPrimaryDatabase ( $domain=false) | |
Get connection to the primary database. | |
getReplicaDatabase ( $domain=false, $group=null) | |
Get connection to a replica database. | |
getTransactionProfiler () | |
Get the TransactionProfiler used by this instance. | |
hasOrMadeRecentPrimaryChanges ( $age=null) | |
Determine if any primary connection has pending/written changes from this request. | |
hasPrimaryChanges () | |
Determine if any primary connection has pending changes. | |
hasStreamingReplicaServers () | |
Whether it has streaming replica servers. | |
hasTransactionRound () | |
Check if an explicit transaction round is active. | |
isLocalDomain ( $domain) | |
Determine whether, after mapping, the domain refers to the main domain of the local wiki. | |
isReadyForRoundOperations () | |
Check if transaction rounds can be started, committed, or rolled back right now. | |
isSharedVirtualDomain ( $domain) | |
Is the domain a virtual domain with a statically configured database name? | |
laggedReplicaUsed () | |
Determine if any lagged replica database server connection was used. | |
reconfigure (array $conf) | |
Reconfigure using the given config array. | |
redefineLocalDomain ( $domain) | |
Close all connections and redefine the local database domain. | |
rollbackPrimaryChanges ( $fname=__METHOD__) | |
Rollback all primary connection transactions and flush all replica connection transactions. | |
setAgentName ( $agent) | |
setDefaultReplicationWaitTimeout ( $seconds) | |
Set the default timeout for replication wait checks. | |
setDomainAliases (array $aliases) | |
Convert certain database domains to alternative ones. | |
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. | |
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() prior to any waiting. | |
shutdown ( $flags=self::SHUTDOWN_NORMAL, ?callable $workCallback=null, &$cpIndex=null, &$cpClientId=null) | |
Prepare all instantiated tracked load balancer instances for shutdown. | |
waitForReplication (array $opts=[]) | |
Waits for the replica database server to catch up to the current primary position. | |
Static Public Member Functions | |
static | newDisabled (array $params=[]) |
static | newFromConnection (IDatabase $db, array $params=[]) |
Protected Member Functions | |
getLBsForOwner () | |
Get all tracked load balancers with the internal "for owner" interface. | |
![]() | |
baseLoadBalancerParams () | |
Get parameters to ILoadBalancer::__construct() | |
configure (array $conf) | |
initLoadBalancer (ILoadBalancerForOwner $lb) | |
Additional Inherited Members | |
![]() | |
const | CLUSTER_MAIN_DEFAULT = 'DEFAULT' |
Default main cluster name (do not change this) | |
const | SHUTDOWN_NO_CHRONPROT = 1 |
Do not save "session consistency" DB replication positions. | |
const | SHUTDOWN_NORMAL = 0 |
Idiom for "no special shutdown flags". | |
![]() | |
ChronologyProtector | $chronologyProtector |
DatabaseDomain[] string[] | $domainAliases = [] |
Map of (domain alias => DB domain) | |
DatabaseDomain | $localDomain |
Local domain. | |
string false | $readOnlyReason = false |
Reason all LBs are read-only or false if not. | |
BagOStuff | $srvCache |
array string[] | $virtualDomains = [] |
List of registered virtual domains. | |
array array[] | $virtualDomainsMapping = [] |
Map of virtual domain to array of cluster and domain. | |
WANObjectCache | $wanCache |
LoadBalancer manager for sites with one "main" cluster using only injected database connections.
This class assumes that there are no "external" clusters.
LoadBalancerDisabled will be used if a null connection handle is injected.
Definition at line 35 of file LBFactorySingle.php.
Wikimedia\Rdbms\LBFactorySingle::__construct | ( | array | $conf | ) |
newFromConnection
is preferablearray | $conf | An associative array containing one of the following:
|
Reimplemented from Wikimedia\Rdbms\LBFactory.
Definition at line 45 of file LBFactorySingle.php.
References Wikimedia\Rdbms\LBFactory\baseLoadBalancerParams(), and Wikimedia\Rdbms\LBFactory\initLoadBalancer().
Wikimedia\Rdbms\LBFactorySingle::__destruct | ( | ) |
Definition at line 125 of file LBFactorySingle.php.
Wikimedia\Rdbms\LBFactorySingle::getAllExternalLBs | ( | ) |
Get the tracked load balancer instances for all external clusters.
If no tracked instance exists for a cluster, then one will be instantiated
Implements Wikimedia\Rdbms\ILBFactory.
Definition at line 115 of file LBFactorySingle.php.
Wikimedia\Rdbms\LBFactorySingle::getAllMainLBs | ( | ) |
Get the tracked load balancer instances for all main clusters.
If no tracked instance exists for a cluster, then one will be instantiated
Note that default main cluster name is ILoadBalancer::CLUSTER_MAIN_DEFAULT
Implements Wikimedia\Rdbms\ILBFactory.
Definition at line 111 of file LBFactorySingle.php.
Wikimedia\Rdbms\LBFactorySingle::getExternalLB | ( | $cluster | ) |
Get the tracked load balancer instance for an external cluster.
If no tracked instances exists, then one will be instantiated
string | $cluster | External cluster name |
InvalidArgumentException | If $cluster is not recognized |
Implements Wikimedia\Rdbms\ILBFactory.
Definition at line 106 of file LBFactorySingle.php.
|
protected |
Get all tracked load balancers with the internal "for owner" interface.
Reimplemented from Wikimedia\Rdbms\LBFactory.
Definition at line 119 of file LBFactorySingle.php.
Wikimedia\Rdbms\LBFactorySingle::getMainLB | ( | $domain = false | ) |
Get the tracked load balancer instance for the main cluster that handles the given domain.
If no tracked instances exists, then one will be instantiated
string | false | $domain | Domain ID, or false for the current domain |
Implements Wikimedia\Rdbms\ILBFactory.
Definition at line 97 of file LBFactorySingle.php.
|
static |
array | $params | Parameter map to LBFactorySingle::__construct() |
Definition at line 85 of file LBFactorySingle.php.
References $params.
Wikimedia\Rdbms\LBFactorySingle::newExternalLB | ( | $cluster | ) |
Create a new load balancer instance for an external cluster.
The resulting object will be untracked and the caller is responsible for cleaning it up. Database replication positions will not be saved by ChronologyProtector.
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 cluster name |
InvalidArgumentException | If $cluster is not recognized |
Implements Wikimedia\Rdbms\ILBFactory.
Definition at line 101 of file LBFactorySingle.php.
|
static |
IDatabase | $db | Live connection handle |
array | $params | Parameter map to LBFactorySingle::__construct() |
Definition at line 72 of file LBFactorySingle.php.
References $params, and Wikimedia\Rdbms\IReadableDatabase\getDomainID().
Wikimedia\Rdbms\LBFactorySingle::newMainLB | ( | $domain = false | ) |
Create a new load balancer instance for the main cluster that handles the given domain.
The resulting object is considered to be owned by the caller. Namely, it will be untracked, the caller is responsible for cleaning it up, and replication positions from it will not be saved by ChronologyProtector.
This method is for only advanced usage and callers should almost always use getMainLB() 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 | false | $domain | Domain ID, or false for the current domain |
Implements Wikimedia\Rdbms\ILBFactory.
Definition at line 92 of file LBFactorySingle.php.