MediaWiki REL1_39
PostgreSqlLockManager Class Reference

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

Inheritance diagram for PostgreSqlLockManager:
Collaboration diagram for PostgreSqlLockManager:

Protected Member Functions

 doGetLocksOnServer ( $lockSrv, array $paths, $type)
 
 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.Subclasses must effectively implement this or releaseAllLocks().
Parameters
string$lockSrv
array$pathsByTypeMap of LockManager::LOCK_* constants to lists of paths
Returns
StatusValue

 
 getConnection ( $lockDb)
 Get (or reuse) a connection to a lock DB.
 
 getLocksOnServer ( $lockSrv, array $pathsByType)
 
 getMissKey ( $lockDb)
 Get a cache key for recent query misses for a DB.
 
 initConnection ( $lockDb, IDatabase $db)
 Do additional initialization for new lock DB connection.
 
 isServerUp ( $lockSrv)
 
- Protected Member Functions inherited from QuorumLockManager
 collectPledgeQuorum ( $bucket, callable $callback)
 Attempt to acquire pledges with the peers for a bucket.
 
 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.
 
 releasePledges ( $bucket, callable $callback)
 Attempt to release pledges with the peers for a bucket.
 
- 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
IDatabase[] $conns = []
 Map Database connections (DB name => Database)
 
array[] IDatabase[] $dbServers
 Map of (DB names => server config or IDatabase)
 
 $lockExpiry
 
 $safeDelay
 
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.
 
LoggerInterface $logger
 
string $session
 Random 32-char hex number.
 
const CLI_LOCK_TTL = 3600
 Default lock TTL in CLI mode.
 
const MAX_LOCK_TTL = 2 * 3600
 Max expected lock expiry in any context.
 
const MIN_GUESSED_LOCK_TTL = 5 * 60
 The minimum lock TTL if it is guessed from max_execution_time rather than configured.
 
const MIN_LOCK_TTL = 5
 Minimum lock TTL.
 

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.
 
- 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

PostgreSQL version of DBLockManager that supports shared locks.

All locks are non-blocking, which avoids deadlocks.

Definition at line 11 of file PostgreSqlLockManager.php.

Member Function Documentation

◆ doGetLocksOnServer()

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

Reimplemented from DBLockManager.

Definition at line 19 of file PostgreSqlLockManager.php.

References $res, $type, DBLockManager\getConnection(), and LockManager\LOCK_SH.

◆ releaseAllLocks()

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

Reimplemented from QuorumLockManager.

Definition at line 67 of file PostgreSqlLockManager.php.

Member Data Documentation

◆ $lockTypeMap

array PostgreSqlLockManager::$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 13 of file PostgreSqlLockManager.php.


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