MediaWiki  REL1_24
MemcLockManager Class Reference

Manage locks using memcached servers. More...

Inheritance diagram for MemcLockManager:
Collaboration diagram for MemcLockManager:

List of all members.

Public Member Functions

 __construct (array $config)
 Construct a new instance from configuration.
 __destruct ()
 Make sure remaining locks get cleared for sanity.

Protected Member Functions

 acquireMutexes (MemcachedBagOStuff $memc, array $keys)
 doFreeLocksOnServer ($lockSrv, array $paths, $type)
 doGetLocksOnServer ($lockSrv, array $paths, $type)
 freeLocksOnServer ($lockSrv, array $pathsByType)
 Get a connection to a lock server and release locks on $paths.
 getCache ($lockSrv)
 Get the MemcachedBagOStuff object for a $lockSrv.
 getLocksOnServer ($lockSrv, array $pathsByType)
 Get a connection to a lock server and acquire locks.
 isServerUp ($lockSrv)
 recordKeyForPath ($path)
 releaseAllLocks ()
 releaseMutexes (MemcachedBagOStuff $memc, array $keys)

Static Protected Member Functions

static newLockArray ()
static sanitizeLockArray ($a)

Protected Attributes

array $bagOStuffs = array()
 Map server names to MemcachedBagOStuff objects *.
array $lockTypeMap
 Mapping of lock types to the type actually used *.
array $serversUp = array()
 (server name => bool) *
string $session = ''
 Random UUID *.

Detailed Description

Manage locks using memcached servers.

Version of LockManager based on using memcached servers. This is meant for multi-wiki systems that may share files. All locks are non-blocking, which avoids deadlocks.

All lock requests for a resource, identified by a hash string, will map to one bucket. Each bucket maps to one or several peer servers, each running memcached. A majority of peers must agree for a lock to be acquired.

Since:
1.20

Definition at line 38 of file MemcLockManager.php.


Constructor & Destructor Documentation

Construct a new instance from configuration.

Parameters:
array$configParamaters include:
  • lockServers : Associative array of server names to "<IP>:<port>" strings.
  • srvsByBucket : Array of 1-16 consecutive integer keys, starting from 0, each having an odd-numbered list of server names (peers) as values.
  • memcConfig : Configuration array for ObjectCache::newFromParams. [optional] If set, this must use one of the memcached classes.
Exceptions:
MWException

Reimplemented from LockManager.

Definition at line 62 of file MemcLockManager.php.

Make sure remaining locks get cleared for sanity.

Definition at line 372 of file MemcLockManager.php.

References array(), as, and QuorumLockManager\doUnlock().


Member Function Documentation

MemcLockManager::acquireMutexes ( MemcachedBagOStuff memc,
array keys 
) [protected]
Parameters:
MemcachedBagOStuff$memc
array$keysList of keys to acquire
Returns:
bool

Definition at line 326 of file MemcLockManager.php.

MemcLockManager::doFreeLocksOnServer ( lockSrv,
array paths,
type 
) [protected]
See also:
QuorumLockManager::freeLocksOnServer()
Parameters:
string$lockSrv
array$paths
string$type
Returns:
Status

Definition at line 203 of file MemcLockManager.php.

MemcLockManager::doGetLocksOnServer ( lockSrv,
array paths,
type 
) [protected]
See also:
QuorumLockManager::getLocksOnServer()
Parameters:
string$lockSrv
array$paths
string$type
Returns:
Status

Definition at line 127 of file MemcLockManager.php.

MemcLockManager::freeLocksOnServer ( lockSrv,
array pathsByType 
) [protected]

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:
Status

Reimplemented from QuorumLockManager.

Definition at line 110 of file MemcLockManager.php.

MemcLockManager::getCache ( lockSrv) [protected]

Get the MemcachedBagOStuff object for a $lockSrv.

Parameters:
string$lockSrvServer name
Returns:
MemcachedBagOStuff|null

Definition at line 274 of file MemcLockManager.php.

MemcLockManager::getLocksOnServer ( lockSrv,
array pathsByType 
) [protected]

Get a connection to a lock server and acquire locks.

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

Reimplemented from QuorumLockManager.

Definition at line 88 of file MemcLockManager.php.

MemcLockManager::isServerUp ( lockSrv) [protected]
See also:
QuorumLockManager::isServerUp()
Parameters:
string$lockSrv
Returns:
bool

Reimplemented from QuorumLockManager.

Definition at line 264 of file MemcLockManager.php.

static MemcLockManager::newLockArray ( ) [static, protected]
Returns:
array An empty lock structure for a key

Definition at line 303 of file MemcLockManager.php.

References array().

MemcLockManager::recordKeyForPath ( path) [protected]
Parameters:
string$path
Returns:
string

Definition at line 296 of file MemcLockManager.php.

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

Reimplemented from QuorumLockManager.

Definition at line 255 of file MemcLockManager.php.

MemcLockManager::releaseMutexes ( MemcachedBagOStuff memc,
array keys 
) [protected]
Parameters:
MemcachedBagOStuff$memc
array$keysList of acquired keys

Definition at line 363 of file MemcLockManager.php.

static MemcLockManager::sanitizeLockArray ( a) [static, protected]
Parameters:
array$a
Returns:
array An empty lock structure for a key

Definition at line 311 of file MemcLockManager.php.


Member Data Documentation

array MemcLockManager::$bagOStuffs = array() [protected]

Map server names to MemcachedBagOStuff objects *.

Definition at line 45 of file MemcLockManager.php.

array MemcLockManager::$lockTypeMap [protected]
Initial value:
 array(
        self::LOCK_SH => self::LOCK_SH,
        self::LOCK_UW => self::LOCK_SH,
        self::LOCK_EX => self::LOCK_EX
    )

Mapping of lock types to the type actually used *.

Reimplemented from LockManager.

Definition at line 39 of file MemcLockManager.php.

array MemcLockManager::$serversUp = array() [protected]

(server name => bool) *

Definition at line 47 of file MemcLockManager.php.

string MemcLockManager::$session = '' [protected]

Random UUID *.

Definition at line 49 of file MemcLockManager.php.


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