MediaWiki  REL1_31
ILoadBalancer.php
Go to the documentation of this file.
1 <?php
23 namespace Wikimedia\Rdbms;
24 
25 use Exception;
26 use InvalidArgumentException;
27 
78 interface ILoadBalancer {
80  const DB_REPLICA = -1;
81 
86  const DB_PRIMARY = -2;
92 
94  const DOMAIN_ANY = '';
95 
97  const CONN_TRX_AUTOCOMMIT = 1;
99  const CONN_TRX_AUTO = 1;
100 
126  public function __construct( array $params );
127 
140  public function getReaderIndex( $group = false, $domain = false );
141 
154  public function waitFor( $pos );
155 
165  public function waitForOne( $pos, $timeout = null );
166 
174  public function waitForAll( $pos, $timeout = null );
175 
185  public function getAnyOpenConnection( $i, $flags = 0 );
186 
208  public function getConnection( $i, $groups = [], $domain = false, $flags = 0 );
209 
219  public function reuseConnection( IDatabase $conn );
220 
238  public function getConnectionRef( $i, $groups = [], $domain = false, $flags = 0 );
239 
257  public function getLazyConnectionRef( $i, $groups = [], $domain = false, $flags = 0 );
258 
276  public function getMaintenanceConnectionRef( $db, $groups = [], $domain = false, $flags = 0 );
277 
300  public function openConnection( $i, $domain = false, $flags = 0 );
301 
305  public function getWriterIndex();
306 
313  public function haveIndex( $i );
314 
321  public function isNonZeroLoad( $i );
322 
328  public function getServerCount();
329 
336  public function getServerName( $i );
337 
345  public function getServerType( $i );
346 
353  public function getServerInfo( $i );
354 
360  public function getServerAttributes( $i );
361 
366  public function getMasterPos();
367 
372  public function disable();
373 
377  public function closeAll();
378 
387  public function closeConnection( IDatabase $conn );
388 
394  public function commitAll( $fname = __METHOD__ );
395 
402  public function finalizeMasterChanges();
403 
413  public function approveMasterChanges( array $options );
414 
427  public function beginMasterChanges( $fname = __METHOD__ );
428 
434  public function commitMasterChanges( $fname = __METHOD__ );
435 
444  public function runMasterPostTrxCallbacks( $type );
445 
451  public function rollbackMasterChanges( $fname = __METHOD__ );
452 
461 
467  public function flushReplicaSnapshots( $fname = __METHOD__ );
468 
472  public function hasMasterConnection();
473 
478  public function hasMasterChanges();
479 
484  public function lastMasterChangeTimestamp();
485 
493  public function hasOrMadeRecentMasterChanges( $age = null );
494 
500  public function pendingMasterChangeCallers();
501 
507  public function getLaggedReplicaMode( $domain = false );
508 
517  public function laggedReplicaUsed();
518 
525  public function getReadOnlyReason( $domain = false, IDatabase $conn = null );
526 
532  public function allowLagged( $mode = null );
533 
537  public function pingAll();
538 
544  public function forEachOpenConnection( $callback, array $params = [] );
545 
551  public function forEachOpenMasterConnection( $callback, array $params = [] );
552 
558  public function forEachOpenReplicaConnection( $callback, array $params = [] );
559 
570  public function getMaxLag( $domain = false );
571 
582  public function getLagTimes( $domain = false );
583 
598  public function safeGetLag( IDatabase $conn );
599 
610  public function safeWaitForMasterPos( IDatabase $conn, $pos = false, $timeout = 10 );
611 
619  public function setTransactionListener( $name, callable $callback = null );
620 
626  public function setDomainPrefix( $prefix );
627 
640  public function setTableAliases( array $aliases );
641 
655  public function setIndexAliases( array $aliases );
656 }
Wikimedia\Rdbms\ILoadBalancer\haveIndex
haveIndex( $i)
Returns true if the specified index is a valid server index.
Wikimedia\Rdbms\ILoadBalancer\pendingMasterChangeCallers
pendingMasterChangeCallers()
Get the list of callers that have pending master changes.
Wikimedia\Rdbms\ILoadBalancer\setDomainPrefix
setDomainPrefix( $prefix)
Set a new table prefix for the existing local domain ID for testing.
Wikimedia\Rdbms\ILoadBalancer\pingAll
pingAll()
use
Apache License January AND DISTRIBUTION Definitions License shall mean the terms and conditions for use
Definition: APACHE-LICENSE-2.0.txt:10
Wikimedia\Rdbms\ILoadBalancer\waitForAll
waitForAll( $pos, $timeout=null)
Set the master wait position and wait for ALL replica DBs to catch up to it.
Wikimedia\Rdbms\ILoadBalancer\runMasterPostTrxCallbacks
runMasterPostTrxCallbacks( $type)
Issue all pending post-COMMIT/ROLLBACK callbacks.
array
the array() calling protocol came about after MediaWiki 1.4rc1.
Wikimedia\Rdbms\ILoadBalancer\forEachOpenMasterConnection
forEachOpenMasterConnection( $callback, array $params=[])
Call a function with each open connection object to a master.
Wikimedia\Rdbms\ILoadBalancer\setIndexAliases
setIndexAliases(array $aliases)
Convert certain index names to alternative names before querying the DB.
Wikimedia\Rdbms\ILoadBalancer\getServerInfo
getServerInfo( $i)
Return the server info structure for a given index, or false if the index is invalid.
Wikimedia\Rdbms\ILoadBalancer\disable
disable()
Disable this load balancer.
Wikimedia\Rdbms\ILoadBalancer\getLazyConnectionRef
getLazyConnectionRef( $i, $groups=[], $domain=false, $flags=0)
Get a database connection handle reference without connecting yet.
Wikimedia\Rdbms\ILoadBalancer\DB_PRIMARY
const DB_PRIMARY
Request a primary, write-enabled DB connection.
Definition: ILoadBalancer.php:86
Wikimedia\Rdbms\ILoadBalancer\getConnection
getConnection( $i, $groups=[], $domain=false, $flags=0)
Get a connection handle by server index.
Wikimedia\Rdbms
Definition: ChronologyProtector.php:24
Wikimedia\Rdbms\ILoadBalancer\isNonZeroLoad
isNonZeroLoad( $i)
Returns true if the specified index is valid and has non-zero load.
Wikimedia\Rdbms\ILoadBalancer\safeWaitForMasterPos
safeWaitForMasterPos(IDatabase $conn, $pos=false, $timeout=10)
Wait for a replica DB to reach a specified master position.
$params
$params
Definition: styleTest.css.php:40
Wikimedia\Rdbms\ILoadBalancer\DB_MASTER
const DB_MASTER
Request a primary, write-enabled DB connection.
Definition: ILoadBalancer.php:91
Wikimedia\Rdbms\ILoadBalancer\getServerCount
getServerCount()
Get the number of defined servers (not the number of open connections)
Wikimedia\Rdbms\ILoadBalancer\getMaintenanceConnectionRef
getMaintenanceConnectionRef( $db, $groups=[], $domain=false, $flags=0)
Get a maintenance database connection handle reference for migrations and schema changes.
Wikimedia\Rdbms\ILoadBalancer\getConnectionRef
getConnectionRef( $i, $groups=[], $domain=false, $flags=0)
Get a database connection handle reference.
Wikimedia\Rdbms\ILoadBalancer\rollbackMasterChanges
rollbackMasterChanges( $fname=__METHOD__)
Issue ROLLBACK only on master, only if queries were done on connection.
php
injection txt This is an overview of how MediaWiki makes use of dependency injection The design described here grew from the discussion of RFC T384 The term dependency this means that anything an object needs to operate should be injected from the the object itself should only know narrow no concrete implementation of the logic it relies on The requirement to inject everything typically results in an architecture that based on two main types of and essentially stateless service objects that use other service objects to operate on the value objects As of the beginning MediaWiki is only starting to use the DI approach Much of the code still relies on global state or direct resulting in a highly cyclical dependency which acts as the top level factory for services in MediaWiki which can be used to gain access to default instances of various services MediaWikiServices however also allows new services to be defined and default services to be redefined Services are defined or redefined by providing a callback the instantiator that will return a new instance of the service When it will create an instance of MediaWikiServices and populate it with the services defined in the files listed by thereby bootstrapping the DI framework Per $wgServiceWiringFiles lists includes ServiceWiring php
Definition: injection.txt:37
Wikimedia\Rdbms\IDatabase
Basic database interface for live and lazy-loaded relation database handles.
Definition: IDatabase.php:38
Wikimedia\Rdbms\ILoadBalancer\setTableAliases
setTableAliases(array $aliases)
Make certain table names use their own database, schema, and table prefix when passed into SQL querie...
Wikimedia\Rdbms\ILoadBalancer\getServerAttributes
getServerAttributes( $i)
Wikimedia\Rdbms\ILoadBalancer\allowLagged
allowLagged( $mode=null)
Disables/enables lag checks.
Wikimedia\Rdbms\ILoadBalancer\finalizeMasterChanges
finalizeMasterChanges()
Perform all pre-commit callbacks that remain part of the atomic transactions and disable any post-com...
Wikimedia\Rdbms\ILoadBalancer\reuseConnection
reuseConnection(IDatabase $conn)
Mark a foreign connection as being available for reuse under a different DB domain.
Wikimedia\Rdbms\ILoadBalancer\getServerName
getServerName( $i)
Get the host name or IP address of the server with the specified index.
Wikimedia\Rdbms\ILoadBalancer\suppressTransactionEndCallbacks
suppressTransactionEndCallbacks()
Suppress all pending post-COMMIT/ROLLBACK callbacks.
Wikimedia\Rdbms\ILoadBalancer\forEachOpenConnection
forEachOpenConnection( $callback, array $params=[])
Call a function with each open connection object.
Wikimedia\Rdbms\ILoadBalancer\getMaxLag
getMaxLag( $domain=false)
Get the hostname and lag time of the most-lagged replica DB.
Wikimedia\Rdbms\ILoadBalancer\safeGetLag
safeGetLag(IDatabase $conn)
Get the lag in seconds for a given connection, or zero if this load balancer does not have replicatio...
Wikimedia\Rdbms\ILoadBalancer\getMasterPos
getMasterPos()
Get the current master position for chronology control purposes.
Wikimedia\Rdbms\ILoadBalancer\hasMasterConnection
hasMasterConnection()
Wikimedia\Rdbms\ILoadBalancer\setTransactionListener
setTransactionListener( $name, callable $callback=null)
Set a callback via IDatabase::setTransactionListener() on all current and future master connections o...
Wikimedia\Rdbms\ILoadBalancer\getWriterIndex
getWriterIndex()
Wikimedia\Rdbms\ILoadBalancer\waitFor
waitFor( $pos)
Set the master wait position.
DB_REPLICA
const DB_REPLICA
Definition: defines.php:25
Wikimedia\Rdbms\ILoadBalancer\getLaggedReplicaMode
getLaggedReplicaMode( $domain=false)
Wikimedia\Rdbms\ILoadBalancer\flushReplicaSnapshots
flushReplicaSnapshots( $fname=__METHOD__)
Commit all replica DB transactions so as to flush any REPEATABLE-READ or SSI snapshot.
Wikimedia\Rdbms\ILoadBalancer\openConnection
openConnection( $i, $domain=false, $flags=0)
Open a connection to the server given by the specified index.
Wikimedia\Rdbms\ILoadBalancer\commitAll
commitAll( $fname=__METHOD__)
Commit transactions on all open connections.
$fname
if(defined( 'MW_SETUP_CALLBACK')) $fname
Customization point after all loading (constants, functions, classes, DefaultSettings,...
Definition: Setup.php:112
$options
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped & $options
Definition: hooks.txt:2001
Wikimedia\Rdbms\ILoadBalancer\hasOrMadeRecentMasterChanges
hasOrMadeRecentMasterChanges( $age=null)
Check if this load balancer object had any recent or still pending writes issued against it by this P...
Wikimedia\Rdbms\ILoadBalancer\forEachOpenReplicaConnection
forEachOpenReplicaConnection( $callback, array $params=[])
Call a function with each open replica DB connection object.
Wikimedia\Rdbms\ILoadBalancer\laggedReplicaUsed
laggedReplicaUsed()
Checks whether the database for generic connections this request was both:
Wikimedia\Rdbms\ILoadBalancer\getReaderIndex
getReaderIndex( $group=false, $domain=false)
Get the index of the reader connection, which may be a replica DB.
$name
Allows to change the fields on the form that will be generated $name
Definition: hooks.txt:302
Wikimedia\Rdbms\ILoadBalancer\approveMasterChanges
approveMasterChanges(array $options)
Perform all pre-commit checks for things like replication safety.
Wikimedia\Rdbms\ILoadBalancer\__construct
__construct(array $params)
Construct a manager of IDatabase connection objects.
Wikimedia\Rdbms\ILoadBalancer\getAnyOpenConnection
getAnyOpenConnection( $i, $flags=0)
Get any open connection to a given server index, local or foreign.
Wikimedia\Rdbms\ILoadBalancer\commitMasterChanges
commitMasterChanges( $fname=__METHOD__)
Issue COMMIT on all master connections where writes where done.
Wikimedia\Rdbms\ILoadBalancer\hasMasterChanges
hasMasterChanges()
Determine if there are pending changes in a transaction by this thread.
Wikimedia\Rdbms\ILoadBalancer\waitForOne
waitForOne( $pos, $timeout=null)
Set the master wait position and wait for a "generic" replica DB to catch up to it.
Wikimedia\Rdbms\ILoadBalancer\closeConnection
closeConnection(IDatabase $conn)
Close a connection.
Wikimedia\Rdbms\ILoadBalancer\getReadOnlyReason
getReadOnlyReason( $domain=false, IDatabase $conn=null)
Wikimedia\Rdbms\ILoadBalancer\getServerType
getServerType( $i)
Get DB type of the server with the specified index.
Wikimedia\Rdbms\ILoadBalancer\lastMasterChangeTimestamp
lastMasterChangeTimestamp()
Get the timestamp of the latest write query done by this thread.
Wikimedia\Rdbms\ILoadBalancer\beginMasterChanges
beginMasterChanges( $fname=__METHOD__)
Flush any master transaction snapshots and set DBO_TRX (if DBO_DEFAULT is set)
Wikimedia\Rdbms\ILoadBalancer\closeAll
closeAll()
Close all open connections.
Wikimedia\Rdbms\ILoadBalancer
Database cluster connection, tracking, load balancing, and transaction manager interface.
Definition: ILoadBalancer.php:78
Wikimedia\Rdbms\ILoadBalancer\getLagTimes
getLagTimes( $domain=false)
Get an estimate of replication lag (in seconds) for each server.
$type
$type
Definition: testCompression.php:48