MediaWiki  master
Wikimedia\Rdbms\LBFactorySingle Class Reference

An LBFactory class that always returns a single database object. More...

Inheritance diagram for Wikimedia\Rdbms\LBFactorySingle:
Collaboration diagram for Wikimedia\Rdbms\LBFactorySingle:

Public Member Functions

 __construct (array $conf)
 You probably want to use newFromConnection instead. More...
 
 __destruct ()
 
 forEachLB ( $callback, array $params=[])
 Execute a function for each instantiated tracked load balancer instance. More...
 
 getAllExternalLBs ()
 Get the tracked load balancer instances for all external clusters. More...
 
 getAllMainLBs ()
 Get the tracked load balancer instances for all main clusters. More...
 
 getExternalLB ( $cluster)
 Get the tracked load balancer instance for an external cluster. More...
 
 getMainLB ( $domain=false)
 Get the tracked load balancer instance for a main cluster. More...
 
 newExternalLB ( $cluster, $owner=null)
 Create a new load balancer instance for an external cluster. More...
 
 newMainLB ( $domain=false, $owner=null)
 Create a new load balancer instance for a main cluster. More...
 
- Public Member Functions inherited from Wikimedia\Rdbms\LBFactory
 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 connections on instantiated tracked load balancer instances. More...
 
 commitAll ( $fname=__METHOD__, array $options=[])
 Commit open transactions on all connections. More...
 
 commitAndWaitForReplication ( $fname, $ticket, array $opts=[])
 Call commitMasterChanges() and waitForReplication() if $ticket indicates it is safe. More...
 
 commitMasterChanges ( $fname=__METHOD__, array $options=[])
 Commit changes and clear view snapshots on all master connections. More...
 
 destroy ()
 Close all connections and make further attempts to open connections result in DBAccessError. More...
 
 disableChronologyProtection ()
 Disable the ChronologyProtector on all instantiated tracked load balancer instances. 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 ( $domain=false)
 Get the UNIX timestamp when the client last touched the DB, if they did so recently. More...
 
 getEmptyTransactionTicket ( $fname)
 Get a token asserting that no transaction writes are active on tracked load balancers. More...
 
 getLocalDomainID ()
 Get the local (and default) database domain ID of connection handles. More...
 
 getTransactionProfiler ()
 Get the TransactionProfiler used by this instance. More...
 
 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...
 
 redefineLocalDomain ( $domain)
 Close all connections 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)
 
 setDefaultReplicationWaitTimeout ( $seconds)
 Set the default timeout for replication wait checks. More...
 
 setDomainAliases (array $aliases)
 Convert certain database domains to alternative ones. More...
 
 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...
 
 setMockTime (&$time)
 
 setRequestInfo (array $info)
 Inject HTTP request header/cookie information during setup of this instance. More...
 
 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 ( $flags=self::SHUTDOWN_NORMAL, callable $workCallback=null, &$cpIndex=null, &$cpClientId=null)
 Prepare all instantiated tracked load balancer instances for shutdown. More...
 
 waitForReplication (array $opts=[])
 Waits for the replica DBs to catch up to the current master position. More...
 

Static Public Member Functions

static newFromConnection (IDatabase $db, array $params=[])
 
- Static Public Member Functions inherited from Wikimedia\Rdbms\LBFactory
static getCPInfoFromCookieValue (?string $value, int $minTimestamp)
 Parse a string conveying the client and write index of the chronology protector data. More...
 
static makeCookieValueFromCPIndex (int $writeIndex, int $time, string $clientId)
 Build a string conveying the client and write index of the chronology protector data. More...
 

Private Attributes

LoadBalancerSingle $lb
 

Additional Inherited Members

- Public Attributes inherited from Wikimedia\Rdbms\ILBFactory
const SHUTDOWN_NO_CHRONPROT = 1
 Do not save "session consistency" DB replication positions. More...
 
const SHUTDOWN_NORMAL = 0
 Idion for "no special shutdown flags". More...
 
- Protected Member Functions inherited from Wikimedia\Rdbms\LBFactory
 baseLoadBalancerParams ( $owner)
 Get parameters to ILoadBalancer::__construct() More...
 
 forEachLBCallMethod ( $methodName, array $args=[])
 Call a method on each tracked (instantiated) load balancer instance. More...
 
 getChronologyProtector ()
 
 getOwnershipId ()
 
 initLoadBalancer (ILoadBalancer $lb)
 
 resolveDomainInstance ( $domain)
 
 shutdownChronologyProtector (ChronologyProtector $cp, $workCallback, &$cpIndex=null)
 Get and record all of the staged DB positions into persistent memory storage. More...
 
- Protected Attributes inherited from Wikimedia\Rdbms\LBFactory
BagOStuff $cpStash
 
DatabaseDomain $localDomain
 Local domain. More...
 
int null $maxLag
 
string bool $readOnlyReason = false
 Reason all LBs are read-only or false if not. More...
 
BagOStuff $srvCache
 
WANObjectCache $wanCache
 

Detailed Description

An LBFactory class that always returns a single database object.

Definition at line 32 of file LBFactorySingle.php.

Constructor & Destructor Documentation

◆ __construct()

Wikimedia\Rdbms\LBFactorySingle::__construct ( array  $conf)

You probably want to use newFromConnection instead.

Parameters
array$confAn associative array with one member:
  • connection: The IDatabase connection object

Reimplemented from Wikimedia\Rdbms\LBFactory.

Definition at line 42 of file LBFactorySingle.php.

References Wikimedia\Rdbms\LBFactorySingle\$lb, Wikimedia\Rdbms\LBFactory\baseLoadBalancerParams(), Wikimedia\Rdbms\LBFactory\getOwnershipId(), and Wikimedia\Rdbms\LBFactory\initLoadBalancer().

◆ __destruct()

Wikimedia\Rdbms\LBFactorySingle::__destruct ( )

Reimplemented from Wikimedia\Rdbms\LBFactory.

Definition at line 102 of file LBFactorySingle.php.

Member Function Documentation

◆ forEachLB()

Wikimedia\Rdbms\LBFactorySingle::forEachLB (   $callback,
array  $params = [] 
)

Execute a function for each instantiated tracked load balancer instance.

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 96 of file LBFactorySingle.php.

◆ getAllExternalLBs()

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

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

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 92 of file LBFactorySingle.php.

◆ getAllMainLBs()

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

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

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 88 of file LBFactorySingle.php.

References Wikimedia\Rdbms\LBFactorySingle\$lb.

◆ getExternalLB()

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

Parameters
string$clusterExternal cluster name
Returns
ILoadBalancer

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 84 of file LBFactorySingle.php.

◆ getMainLB()

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

Get the tracked load balancer instance for a main cluster.

If no tracked instances exists, then one will be instantiated

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

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 76 of file LBFactorySingle.php.

References Wikimedia\Rdbms\LBFactorySingle\$lb.

◆ newExternalLB()

Wikimedia\Rdbms\LBFactorySingle::newExternalLB (   $cluster,
  $owner = null 
)

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.

Parameters
string$clusterExternal cluster name
int | null$ownerOwner ID of the new instance (e.g. this LBFactory ID)
Returns
ILoadBalancer

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 80 of file LBFactorySingle.php.

◆ newFromConnection()

static Wikimedia\Rdbms\LBFactorySingle::newFromConnection ( IDatabase  $db,
array  $params = [] 
)
static
Parameters
IDatabase$dbLive connection handle
array$paramsParameter map to LBFactorySingle::__constructs()
Returns
LBFactorySingle
Since
1.28

Definition at line 64 of file LBFactorySingle.php.

References Wikimedia\Rdbms\IDatabase\getDomainID().

◆ newMainLB()

Wikimedia\Rdbms\LBFactorySingle::newMainLB (   $domain = false,
  $owner = null 
)

Create a new load balancer instance for a main 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 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
int | null$ownerOwner ID of the new instance (e.g. this LBFactory ID)
Returns
ILoadBalancer

Implements Wikimedia\Rdbms\ILBFactory.

Definition at line 72 of file LBFactorySingle.php.

Member Data Documentation

◆ $lb


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