MediaWiki  1.28.1
MySqlLockManager Class Reference

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

Inheritance diagram for MySqlLockManager:
Collaboration diagram for MySqlLockManager:

Public Member Functions

 __construct (array $config)
 
- Public Member Functions inherited from DBLockManager
 __construct (array $config)
 Construct a new instance from configuration. More...
 
 __destruct ()
 Make sure remaining locks get cleared for sanity. More...
 
- Public Member Functions inherited from LockManager
 __construct (array $config)
 Construct a new instance from configuration. More...
 
 lock (array $paths, $type=self::LOCK_EX, $timeout=0)
 Lock the resources at the given abstract paths. More...
 
 lockByType (array $pathsByType, $timeout=0)
 Lock the resources at the given abstract paths. More...
 
 unlock (array $paths, $type=self::LOCK_EX)
 Unlock the resources at the given abstract paths. More...
 
 unlockByType (array $pathsByType)
 Unlock the resources at the given abstract paths. More...
 

Protected Member Functions

 doGetLocksOnServer ($lockSrv, array $paths, $type)
 Get a connection to a lock DB and acquire locks on $paths. More...
 
 initConnection ($lockDb, IDatabase $db)
 
 releaseAllLocks ()
 
- Protected Member Functions inherited from DBLockManager
 cacheCheckFailures ($lockDb)
 Checks if the DB has not recently had connection/query errors. More...
 
 cacheRecordFailure ($lockDb)
 Log a lock request failure to the cache. More...
 
 doGetLocksOnServer ($lockSrv, array $paths, $type)
 
 freeLocksOnServer ($lockSrv, array $pathsByType)
 
 getConnection ($lockDb)
 Get (or reuse) a connection to a lock DB. More...
 
 getLocksOnServer ($lockSrv, array $pathsByType)
 change this code to work in one batch More...
 
 getMissKey ($lockDb)
 Get a cache key for recent query misses for a DB. More...
 
 initConnection ($lockDb, IDatabase $db)
 Do additional initialization for new lock DB connection. More...
 
 isServerUp ($lockSrv)
 
- Protected Member Functions inherited from QuorumLockManager
 doLock (array $paths, $type)
 
 doLockByType (array $pathsByType)
 
 doLockingRequestBucket ($bucket, array $pathsByType)
 Attempt to acquire locks with the peers for a bucket. More...
 
 doUnlock (array $paths, $type)
 
 doUnlockByType (array $pathsByType)
 
 doUnlockingRequestBucket ($bucket, array $pathsByType)
 Attempt to release locks with the peers for a bucket. More...
 
 freeLocksOnServer ($lockSrv, array $pathsByType)
 Get a connection to a lock server and release locks on $paths. More...
 
 getBucketFromPath ($path)
 Get the bucket for resource path. More...
 
 getLocksOnServer ($lockSrv, array $pathsByType)
 Get a connection to a lock server and acquire locks. More...
 
 isServerUp ($lockSrv)
 Check if a lock server is up. More...
 
 releaseAllLocks ()
 Release all locks that this session is holding. More...
 
- Protected Member Functions inherited from LockManager
 doLock (array $paths, $type)
 Lock resources with the given keys and lock type. More...
 
 doLockByType (array $pathsByType)
 
 doUnlock (array $paths, $type)
 Unlock resources with the given keys and lock type. More...
 
 doUnlockByType (array $pathsByType)
 
 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. More...
 
 sha1Base16Absolute ($path)
 Get the base 16 SHA-1 of a string, padded to 31 digits. More...
 
 sha1Base36Absolute ($path)
 Get the base 36 SHA-1 of a string, padded to 31 digits. More...
 

Protected Attributes

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

Additional Inherited Members

- Public Attributes inherited from LockManager
const LOCK_EX = 3
 
const LOCK_SH = 1
 Lock types; stronger locks have higher values. More...
 
const LOCK_UW = 2
 

Detailed Description

MySQL version of DBLockManager that supports shared locks.

Do NOT use this on connection handles that are also being used for anything else as the transaction isolation will be wrong and all the other changes will get rolled back when the locks release!

All lock servers must have the innodb table defined in maintenance/locking/filelocks.sql. All locks are non-blocking, which avoids deadlocks.

Definition at line 14 of file MySqlLockManager.php.

Constructor & Destructor Documentation

MySqlLockManager::__construct ( array  $config)

Definition at line 22 of file MySqlLockManager.php.

Member Function Documentation

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
StatusValue

Definition at line 45 of file MySqlLockManager.php.

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

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

Definition at line 28 of file MySqlLockManager.php.

References IDatabase\query(), and IDatabase\startAtomic().

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

Definition at line 122 of file MySqlLockManager.php.

References $e, $status, as, and StatusValue\newGood().

Member Data Documentation

array MySqlLockManager::$lockTypeMap
protected
Initial value:
= [
self::LOCK_SH => self::LOCK_SH

Mapping of lock types to the type actually used.

Definition at line 16 of file MySqlLockManager.php.


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