MediaWiki  REL1_21
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)
 freeLocksOnServer ($lockSrv, array $paths, $type)
 getCache ($lockSrv)
 Get the MemcachedBagOStuff object for a $lockSrv.
 getLocksOnServer ($lockSrv, array $paths, $type)
 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()
 *
 $session = ''

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.

$config paramaters 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.
Parameters:
array$config
Exceptions:
MWException

Reimplemented from LockManager.

Definition at line 63 of file MemcLockManager.php.

Make sure remaining locks get cleared for sanity.

Definition at line 330 of file MemcLockManager.php.


Member Function Documentation

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

Definition at line 283 of file MemcLockManager.php.

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

Reimplemented from QuorumLockManager.

Definition at line 164 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 233 of file MemcLockManager.php.

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

Reimplemented from QuorumLockManager.

Definition at line 92 of file MemcLockManager.php.

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

Reimplemented from QuorumLockManager.

Definition at line 223 of file MemcLockManager.php.

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

Definition at line 261 of file MemcLockManager.php.

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

Definition at line 254 of file MemcLockManager.php.

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

Reimplemented from QuorumLockManager.

Definition at line 215 of file MemcLockManager.php.

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

Definition at line 321 of file MemcLockManager.php.

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

Definition at line 269 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]

*

Definition at line 46 of file MemcLockManager.php.

MemcLockManager::$session = '' [protected]

Definition at line 48 of file MemcLockManager.php.


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