MediaWiki master
ILBFactory.php
Go to the documentation of this file.
1<?php
20namespace Wikimedia\Rdbms;
21
22use Generator;
23use InvalidArgumentException;
24
48 public const SHUTDOWN_NORMAL = 0;
50 public const SHUTDOWN_NO_CHRONPROT = 1;
51
53 public const CLUSTER_MAIN_DEFAULT = 'DEFAULT';
54
87 public function __construct( array $conf );
88
96 public function destroy();
97
102 public function autoReconfigure(): void;
103
111 public function getLocalDomainID();
112
123 public function redefineLocalDomain( $domain );
124
137 public function getLoadBalancer( $domain = false ): ILoadBalancer;
138
156 public function newMainLB( $domain = false ): ILoadBalancerForOwner;
157
169 public function getMainLB( $domain = false ): ILoadBalancer;
170
186 public function newExternalLB( $cluster ): ILoadBalancerForOwner;
187
197 public function getExternalLB( $cluster ): ILoadBalancer;
198
209 public function getAllMainLBs(): array;
210
219 public function getAllExternalLBs(): array;
220
227 public function getAllLBs();
228
237 public function shutdown(
238 $flags = self::SHUTDOWN_NORMAL,
239 callable $workCallback = null,
240 &$cpIndex = null,
241 &$cpClientId = null
242 );
243
253 public function flushReplicaSnapshots( $fname = __METHOD__ );
254
270 public function beginPrimaryChanges( $fname = __METHOD__ );
271
282 public function commitPrimaryChanges( $fname = __METHOD__, int $maxWriteDuration = 0 );
283
292 public function rollbackPrimaryChanges( $fname = __METHOD__ );
293
305 public function flushPrimarySessions( $fname = __METHOD__ );
306
313 public function hasTransactionRound();
314
323 public function isReadyForRoundOperations();
324
333 public function hasPrimaryChanges();
334
342 public function laggedReplicaUsed();
343
352 public function hasOrMadeRecentPrimaryChanges( $age = null );
353
375 public function waitForReplication( array $opts = [] );
376
385 public function setWaitForReplicationListener( $name, callable $callback = null );
386
393
400 public function setLocalDomainPrefix( $prefix );
401
407 public function closeAll( $fname = __METHOD__ );
408
412 public function setAgentName( $agent );
413
420 public function hasStreamingReplicaServers();
421
429 public function setDefaultReplicationWaitTimeout( $seconds );
430
444 public function setTableAliases( array $aliases );
445
458 public function setIndexAliases( array $aliases );
459
468 public function setDomainAliases( array $aliases );
469
477}
Detect high-contention DB queries via profiling calls.
Provide primary and replica IDatabase connections.
Manager of ILoadBalancer objects and, indirectly, IDatabase connections.
getLocalDomainID()
Get the local (and default) database domain ID of connection handles.
autoReconfigure()
Reload the configuration if necessary.
redefineLocalDomain( $domain)
Close all connections and redefine the local database domain.
beginPrimaryChanges( $fname=__METHOD__)
Flush any primary transaction snapshots and set DBO_TRX (if DBO_DEFAULT is set)
getAllExternalLBs()
Get the tracked load balancer instances for all external clusters.
setTableAliases(array $aliases)
Make certain table names use their own database, schema, and table prefix when passed into SQL querie...
newMainLB( $domain=false)
Create a new load balancer instance for the main cluster that handles the given domain.
setLocalDomainPrefix( $prefix)
Set a new table prefix for the existing local domain ID for testing.
commitPrimaryChanges( $fname=__METHOD__, int $maxWriteDuration=0)
Commit changes and clear view snapshots on all primary connections.
hasPrimaryChanges()
Determine if any primary connection has pending changes.
getLoadBalancer( $domain=false)
Get the tracked load balancer instance for a given domain.
waitForReplication(array $opts=[])
Waits for the replica database server to catch up to the current primary position.
rollbackPrimaryChanges( $fname=__METHOD__)
Rollback changes on all primary connections.
closeAll( $fname=__METHOD__)
Close all connections on instantiated tracked load balancer instances.
flushPrimarySessions( $fname=__METHOD__)
Release important session-level state (named lock, table locks) as post-rollback cleanup.
__construct(array $conf)
Sub-classes may extend the required keys in $conf with additional parameters.
shutdown( $flags=self::SHUTDOWN_NORMAL, callable $workCallback=null, &$cpIndex=null, &$cpClientId=null)
Prepare all instantiated tracked load balancer instances for shutdown.
destroy()
Close all connections and make further attempts to open connections result in DBAccessError.
laggedReplicaUsed()
Determine if any lagged replica database server connection was used.
getAllLBs()
Get all tracked load balancer instances (generator)
setDomainAliases(array $aliases)
Convert certain database domains to alternative ones.
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.
disableChronologyProtection()
Disable the ChronologyProtector on all instantiated tracked load balancer instances.
setDefaultReplicationWaitTimeout( $seconds)
Set the default timeout for replication wait checks.
const SHUTDOWN_NO_CHRONPROT
Do not save "session consistency" DB replication positions.
hasTransactionRound()
Check if an explicit transaction round is active.
const SHUTDOWN_NORMAL
Idiom for "no special shutdown flags".
hasStreamingReplicaServers()
Whether it has streaming replica servers.
getAllMainLBs()
Get the tracked load balancer instances for all main clusters.
getTransactionProfiler()
Get the TransactionProfiler used by this instance.
setIndexAliases(array $aliases)
Convert certain index names to alternative names before querying the DB.
hasOrMadeRecentPrimaryChanges( $age=null)
Determine if any primary connection has pending/written changes from this request.
newExternalLB( $cluster)
Create a new load balancer instance for an external cluster.
isReadyForRoundOperations()
Check if transaction rounds can be started, committed, or rolled back right now.
flushReplicaSnapshots( $fname=__METHOD__)
Commit all replica database server transactions, clearing any REPEATABLE-READ/SSI snapshots.
setWaitForReplicationListener( $name, callable $callback=null)
Add a callback to be run in every call to waitForReplication() before waiting.
Internal interface for LoadBalancer methods used by LBFactory.
This class is a delegate to ILBFactory for a given database cluster.