MediaWiki  master
ILBFactory.php
Go to the documentation of this file.
1 <?php
20 namespace Wikimedia\Rdbms;
21 
22 use Generator;
23 use InvalidArgumentException;
24 
46 interface ILBFactory extends IConnectionProvider {
48  public const SHUTDOWN_NORMAL = 0;
50  public const SHUTDOWN_NO_CHRONPROT = 1;
51 
53  public const CLUSTER_MAIN_DEFAULT = 'DEFAULT';
54 
75  public function __construct( array $conf );
76 
84  public function destroy();
85 
90  public function autoReconfigure(): void;
91 
99  public function getLocalDomainID();
100 
111  public function redefineLocalDomain( $domain );
112 
130  public function newMainLB( $domain = false ): ILoadBalancerForOwner;
131 
143  public function getMainLB( $domain = false ): ILoadBalancer;
144 
160  public function newExternalLB( $cluster ): ILoadBalancerForOwner;
161 
171  public function getExternalLB( $cluster ): ILoadBalancer;
172 
183  public function getAllMainLBs(): array;
184 
193  public function getAllExternalLBs(): array;
194 
201  public function getAllLBs();
202 
211  public function shutdown(
212  $flags = self::SHUTDOWN_NORMAL,
213  callable $workCallback = null,
214  &$cpIndex = null,
215  &$cpClientId = null
216  );
217 
227  public function flushReplicaSnapshots( $fname = __METHOD__ );
228 
244  public function beginPrimaryChanges( $fname = __METHOD__ );
245 
256  public function commitPrimaryChanges( $fname = __METHOD__, int $maxWriteDuration = 0 );
257 
266  public function rollbackPrimaryChanges( $fname = __METHOD__ );
267 
279  public function flushPrimarySessions( $fname = __METHOD__ );
280 
287  public function hasTransactionRound();
288 
297  public function isReadyForRoundOperations();
298 
307  public function hasPrimaryChanges();
308 
316  public function laggedReplicaUsed();
317 
326  public function hasOrMadeRecentPrimaryChanges( $age = null );
327 
349  public function waitForReplication( array $opts = [] );
350 
359  public function setWaitForReplicationListener( $name, callable $callback = null );
360 
366  public function disableChronologyProtection();
367 
374  public function setLocalDomainPrefix( $prefix );
375 
381  public function closeAll( $fname = __METHOD__ );
382 
386  public function setAgentName( $agent );
387 
394  public function hasStreamingReplicaServers();
395 
403  public function setDefaultReplicationWaitTimeout( $seconds );
404 
418  public function setTableAliases( array $aliases );
419 
432  public function setIndexAliases( array $aliases );
433 
442  public function setDomainAliases( array $aliases );
443 
451 }
Detect high-contention DB queries via profiling calls.
Provide primary and replica IDatabase connections.
Manager of ILoadBalancer objects and, indirectly, IDatabase connections.
Definition: ILBFactory.php:46
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.
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.
Definition: ILBFactory.php:50
hasTransactionRound()
Check if an explicit transaction round is active.
const SHUTDOWN_NORMAL
Idiom for "no special shutdown flags".
Definition: ILBFactory.php:48
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.