MediaWiki REL1_27
MySqlLockManager Class Reference

MySQL version of DBLockManager that supports shared locks. More...

Inheritance diagram for MySqlLockManager:
Collaboration diagram for MySqlLockManager:

Protected Member Functions

 doGetLocksOnServer ( $lockSrv, array $paths, $type)
 Get a connection to a lock DB and acquire locks on $paths.
 
 initConnection ( $lockDb, IDatabase $db)
 
 releaseAllLocks ()
 
- Protected Member Functions inherited from DBLockManager
 cacheCheckFailures ( $lockDb)
 Checks if the DB has not recently had connection/query errors.
 
 cacheRecordFailure ( $lockDb)
 Log a lock request failure to the cache.
 
 freeLocksOnServer ( $lockSrv, array $pathsByType)
 Get a connection to a lock server and release locks on $paths.
 
 getConnection ( $lockDb)
 Get (or reuse) a connection to a lock DB.
 
 getLocksOnServer ( $lockSrv, array $pathsByType)
 Get a connection to a lock server and acquire locks.
 
 getMissKey ( $lockDb)
 Get a cache key for recent query misses for a DB.
 
 isServerUp ( $lockSrv)
 
- Protected Member Functions inherited from QuorumLockManager
 doLock (array $paths, $type)
 Lock resources with the given keys and lock type.
 
 doLockByType (array $pathsByType)
 
 doLockingRequestBucket ( $bucket, array $pathsByType)
 Attempt to acquire locks with the peers for a bucket.
 
 doUnlock (array $paths, $type)
 Unlock resources with the given keys and lock type.
 
 doUnlockByType (array $pathsByType)
 
 doUnlockingRequestBucket ( $bucket, array $pathsByType)
 Attempt to release locks with the peers for a bucket.
 
 getBucketFromPath ( $path)
 Get the bucket for resource path.
 
- Protected Member Functions inherited from LockManager
 normalizePathsByType (array $pathsByType)
 Normalize the $paths array by converting LOCK_UW locks into the appropriate type and removing any duplicated paths for each lock type.
 
 sha1Base16Absolute ( $path)
 Get the base 16 SHA-1 of a string, padded to 31 digits.
 
 sha1Base36Absolute ( $path)
 Get the base 36 SHA-1 of a string, padded to 31 digits.
 

Protected Attributes

array $lockTypeMap
 Mapping of lock types to the type actually used.
 
- Protected Attributes inherited from DBLockManager
array $conns = []
 Map Database connections (DB name => Database)
 
array $dbServers
 Map of DB names to server config.
 
 $lockExpiry
 
 $safeDelay
 
 $session = 0
 
BagOStuff $statusCache
 
- Protected Attributes inherited from QuorumLockManager
array $degradedBuckets = []
 Map of degraded buckets.
 
array $srvsByBucket = []
 Map of bucket indexes to peer server lists.
 
- Protected Attributes inherited from LockManager
 $domain
 
array $locksHeld = []
 Map of (resource path => lock type => count)
 
 $lockTTL
 
array $lockTypeMap
 Mapping of lock types to the type actually used.
 

Additional Inherited Members

- Public Member Functions inherited from DBLockManager
 __construct (array $config)
 Construct a new instance from configuration.
 
 __destruct ()
 Make sure remaining locks get cleared for sanity.
 
- Public Member Functions inherited from LockManager
 lock (array $paths, $type=self::LOCK_EX, $timeout=0)
 Lock the resources at the given abstract paths.
 
 lockByType (array $pathsByType, $timeout=0)
 Lock the resources at the given abstract paths.
 
 unlock (array $paths, $type=self::LOCK_EX)
 Unlock the resources at the given abstract paths.
 
 unlockByType (array $pathsByType)
 Unlock the resources at the given abstract paths.
 
- Public Attributes inherited from LockManager
const LOCK_EX = 3
 
const LOCK_SH = 1
 Lock types; stronger locks have higher values.
 
const LOCK_UW = 2
 

Detailed Description

MySQL version of DBLockManager that supports shared locks.

All locks are non-blocking, which avoids deadlocks.

Definition at line 242 of file DBLockManager.php.

Member Function Documentation

◆ doGetLocksOnServer()

MySqlLockManager::doGetLocksOnServer (   $lockSrv,
array  $paths,
  $type 
)
protected

Get a connection to a lock DB and acquire locks on $paths.

This does not use GET_LOCK() per http://bugs.mysql.com/bug.php?id=1118.

See also
DBLockManager::getLocksOnServer()
Parameters
string$lockSrv
array$paths
string$type
Returns
Status

Definition at line 269 of file DBLockManager.php.

References $keys, $path, DBLockManager\$session, $status, $type, as, DBLockManager\getConnection(), and LockManager\sha1Base36Absolute().

◆ initConnection()

MySqlLockManager::initConnection (   $lockDb,
IDatabase  $db 
)
protected
Parameters
string$lockDb
IDatabase$db

Reimplemented from DBLockManager.

Definition at line 254 of file DBLockManager.php.

References IDatabase\query().

◆ releaseAllLocks()

MySqlLockManager::releaseAllLocks ( )
protected
See also
QuorumLockManager::releaseAllLocks()
Returns
Status

Reimplemented from QuorumLockManager.

Definition at line 339 of file DBLockManager.php.

References $e, $status, and as.

Member Data Documentation

◆ $lockTypeMap

array MySqlLockManager::$lockTypeMap
protected
Initial value:
= [
self::LOCK_SH => self::LOCK_SH,
self::LOCK_UW => self::LOCK_SH,
self::LOCK_EX => self::LOCK_EX
]
const LOCK_SH
Lock types; stronger locks have higher values.

Mapping of lock types to the type actually used.

Definition at line 244 of file DBLockManager.php.


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