MediaWiki  1.28.0
QuorumLockManager Class Reference

Version of LockManager that uses a quorum from peer servers for locks. More...

Inheritance diagram for QuorumLockManager:
Collaboration diagram for QuorumLockManager:

Protected Member Functions

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

Version of LockManager that uses a quorum from peer servers for locks.

The resource space can also be sharded into separate peer groups.

Since
1.20

Definition at line 31 of file QuorumLockManager.php.

Member Function Documentation

QuorumLockManager::doLock ( array  $paths,
  $type 
)
finalprotected

Definition at line 38 of file QuorumLockManager.php.

References $type, and doLockByType().

QuorumLockManager::doLockByType ( array  $pathsByType)
protected
QuorumLockManager::doLockingRequestBucket (   $bucket,
array  $pathsByType 
)
finalprotected

Attempt to acquire locks with the peers for a bucket.

This is all or nothing; if any key is locked then this totally fails.

Parameters
int$bucket
array$pathsByTypeMap of LockManager::LOCK_* constants to lists of paths
Returns
StatusValue

Definition at line 129 of file QuorumLockManager.php.

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

Referenced by doLockByType().

QuorumLockManager::doUnlock ( array  $paths,
  $type 
)
finalprotected

Definition at line 42 of file QuorumLockManager.php.

References $type, and doUnlockByType().

Referenced by MemcLockManager\__destruct().

QuorumLockManager::doUnlockByType ( array  $pathsByType)
protected
QuorumLockManager::doUnlockingRequestBucket (   $bucket,
array  $pathsByType 
)
finalprotected

Attempt to release locks with the peers for a bucket.

Parameters
int$bucket
array$pathsByTypeMap of LockManager::LOCK_* constants to lists of paths
Returns
StatusValue

Definition at line 171 of file QuorumLockManager.php.

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

Referenced by doUnlockByType().

QuorumLockManager::freeLocksOnServer (   $lockSrv,
array  $pathsByType 
)
abstractprotected

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

Referenced by doUnlockingRequestBucket().

QuorumLockManager::getBucketFromPath (   $path)
protected

Get the bucket for resource path.

This should avoid throwing any exceptions.

Parameters
string$path
Returns
int

Definition at line 206 of file QuorumLockManager.php.

References $path.

Referenced by doLockByType(), and doUnlockByType().

QuorumLockManager::getLocksOnServer (   $lockSrv,
array  $pathsByType 
)
abstractprotected

Get a connection to a lock server and acquire locks.

Parameters
string$lockSrv
array$pathsByTypeMap of LockManager::LOCK_* constants to lists of paths
Returns
StatusValue

Referenced by doLockingRequestBucket().

QuorumLockManager::isServerUp (   $lockSrv)
abstractprotected

Check if a lock server is up.

This should process cache results to reduce RTT.

Parameters
string$lockSrv
Returns
bool

Referenced by doLockingRequestBucket(), and doUnlockingRequestBucket().

QuorumLockManager::releaseAllLocks ( )
abstractprotected

Release all locks that this session is holding.

Subclasses must effectively implement this or freeLocksOnServer().

Returns
StatusValue

Referenced by DBLockManager\__destruct(), and doUnlockByType().

Member Data Documentation

array QuorumLockManager::$degradedBuckets = []
protected

Map of degraded buckets.

Definition at line 36 of file QuorumLockManager.php.

array QuorumLockManager::$srvsByBucket = []
protected

Map of bucket indexes to peer server lists.

Definition at line 33 of file QuorumLockManager.php.


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