MediaWiki  master
Wikimedia\Rdbms\LBFactorySimple Class Reference

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

Inheritance diagram for Wikimedia\Rdbms\LBFactorySimple:
Collaboration diagram for Wikimedia\Rdbms\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...
 
 getAllExternalLBs ()
 Get cached (tracked) load balancers for all external database clusters. More...
 
 getAllMainLBs ()
 Get cached (tracked) load balancers for all main database clusters. More...
 
 getExternalLB ( $cluster)
 Get a cached (tracked) load balancer for external storage. More...
 
 getMainLB ( $domain=false)
 Get a cached (tracked) load balancer object. More...
 
 newExternalLB ( $cluster)
 Create a new load balancer for external storage. More...
 
 newMainLB ( $domain=false)
 Create a new load balancer object. More...
 
- Public Member Functions inherited from Wikimedia\Rdbms\LBFactory
 __construct (array $conf)
 Construct a manager of ILoadBalancer objects. More...
 
 __destruct ()
 
 appendShutdownCPIndexAsQuery ( $url, $index)
 Append ?cpPosIndex 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 and clear view snapshots 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...
 
 getChronologyProtectorClientId ()
 Get the client ID of the ChronologyProtector instance. More...
 
 getChronologyProtectorTouched ( $dbName)
 
 getEmptyTransactionTicket ( $fname)
 Get a token asserting that no transaction writes are active. More...
 
 getExternalLB ( $cluster)
 
 getLocalDomainID ()
 Get the local (and default) database domain ID of connection handles. More...
 
 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...
 
 hasTransactionRound ()
 Check if an explicit transaction round is active. More...
 
 isReadyForRoundOperations ()
 Check if transaction rounds can be started, committed, or rolled back right now. More...
 
 laggedReplicaUsed ()
 Detemine if any lagged replica DB connection was used. More...
 
 newExternalLB ( $cluster)
 
 newMainLB ( $domain=false)
 
 redefineLocalDomain ( $domain)
 Close all connection and redefine the local domain for testing or schema creation. More...
 
 resolveDomainID ( $domain)
 
 rollbackMasterChanges ( $fname=__METHOD__)
 Rollback changes on all master connections. More...
 
 setAgentName ( $agent)
 
 setDomainPrefix ( $prefix)
 
 setIndexAliases (array $aliases)
 Convert certain index names to alternative names before querying the DB. More...
 
 setLocalDomainPrefix ( $prefix)
 Set a new table prefix for the existing local domain ID for testing. More...
 
 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. More...
 
 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, &$cpIndex=null, &$cpClientId=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

- 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() More...
 
 forEachLBCallMethod ( $methodName, array $args=[])
 Call a method of each tracked load balancer. More...
 
 getChronologyProtector ()
 
 initLoadBalancer (ILoadBalancer $lb)
 
 shutdownChronologyProtector (ChronologyProtector $cp, $workCallback, $mode, &$cpIndex=null)
 Get and record all of the staged DB positions into persistent memory storage. More...
 
- Protected Attributes inherited from Wikimedia\Rdbms\LBFactory
DatabaseDomain $localDomain
 Local domain. More...
 
int null $maxLag
 
BagOStuff $memStash
 
string bool $readOnlyReason = false
 Reason all LBs are read-only or false if not. More...
 
BagOStuff $srvCache
 
WANObjectCache $wanCache
 

Detailed Description

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

Definition at line 31 of file LBFactorySimple.php.

Constructor & Destructor Documentation

◆ __construct()

Wikimedia\Rdbms\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 Wikimedia\Rdbms\ILBFactory.

Definition at line 57 of file LBFactorySimple.php.

References as, and servers.

Member Function Documentation

◆ forEachLB()

Wikimedia\Rdbms\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 Wikimedia\Rdbms\ILBFactory.

Definition at line 127 of file LBFactorySimple.php.

References $params, and as.

◆ getAllExternalLBs()

Wikimedia\Rdbms\LBFactorySimple::getAllExternalLBs ( )

Get cached (tracked) load balancers for all external database clusters.

Returns
ILoadBalancer[] Map of (cluster name => ILoadBalancer)
Since
1.29

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 105 of file LBFactorySimple.php.

References as, and Wikimedia\Rdbms\LBFactorySimple\getExternalLB().

◆ getAllMainLBs()

Wikimedia\Rdbms\LBFactorySimple::getAllMainLBs ( )

Get cached (tracked) load balancers for all main database clusters.

Returns
ILoadBalancer[] Map of (cluster name => ILoadBalancer)
Since
1.29

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 101 of file LBFactorySimple.php.

References Wikimedia\Rdbms\LBFactorySimple\getMainLB().

◆ getExternalLB()

Wikimedia\Rdbms\LBFactorySimple::getExternalLB (   $cluster)

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

Parameters
string$clusterExternal storage cluster name
Returns
ILoadBalancer

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 93 of file LBFactorySimple.php.

References Wikimedia\Rdbms\LBFactorySimple\newExternalLB().

Referenced by Wikimedia\Rdbms\LBFactorySimple\getAllExternalLBs().

◆ getMainLB()

Wikimedia\Rdbms\LBFactorySimple::getMainLB (   $domain = false)

Get a cached (tracked) load balancer object.

Parameters
bool | string$domainDomain ID, or false for the current domain
Returns
ILoadBalancer

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 77 of file LBFactorySimple.php.

References Wikimedia\Rdbms\LBFactorySimple\$mainLB, and Wikimedia\Rdbms\LBFactorySimple\newMainLB().

Referenced by Wikimedia\Rdbms\LBFactorySimple\getAllMainLBs().

◆ newExternalLB()

Wikimedia\Rdbms\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 Wikimedia\Rdbms\ILBFactory.

Definition at line 85 of file LBFactorySimple.php.

References Wikimedia\Rdbms\LBFactorySimple\newLoadBalancer().

Referenced by Wikimedia\Rdbms\LBFactorySimple\getExternalLB().

◆ newLoadBalancer()

Wikimedia\Rdbms\LBFactorySimple::newLoadBalancer ( array  $servers)
private

◆ newMainLB()

Wikimedia\Rdbms\LBFactorySimple::newMainLB (   $domain = false)

Create a new load balancer object.

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 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.

Parameters
bool | string$domainDomain ID, or false for the current domain
Returns
ILoadBalancer

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 73 of file LBFactorySimple.php.

References Wikimedia\Rdbms\LBFactorySimple\newLoadBalancer(), and servers.

Referenced by Wikimedia\Rdbms\LBFactorySimple\getMainLB().

Member Data Documentation

◆ $externalClusters

array [] Wikimedia\Rdbms\LBFactorySimple::$externalClusters = []
private

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

Definition at line 40 of file LBFactorySimple.php.

◆ $extLBs

LoadBalancer [] Wikimedia\Rdbms\LBFactorySimple::$extLBs = []
private

Definition at line 35 of file LBFactorySimple.php.

◆ $loadMonitorClass

string Wikimedia\Rdbms\LBFactorySimple::$loadMonitorClass
private

Definition at line 43 of file LBFactorySimple.php.

◆ $mainLB

LoadBalancer Wikimedia\Rdbms\LBFactorySimple::$mainLB
private

Definition at line 33 of file LBFactorySimple.php.

Referenced by Wikimedia\Rdbms\LBFactorySimple\getMainLB().

◆ $servers

array [] Wikimedia\Rdbms\LBFactorySimple::$servers = []
private

Map of (server index => server config)

Definition at line 38 of file LBFactorySimple.php.


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