MediaWiki  REL1_20
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)

Protected Attributes

Array $bagOStuffs = array()
 Map server names to MemcachedBagOStuff objects *.
 $lockExpiry
Array $lockTypeMap
 Mapping of lock types to the type actually used *.
Array $serversUp = array()
 *
 $session = ''
 $wikiId = ''

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

MemcLockManager::__construct ( array $  config)

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.
  • wikiId : Wiki ID string that all resources are relative to. [optional]
Parameters:
Array$config

Reimplemented from LockManager.

Definition at line 65 of file MemcLockManager.php.

Make sure remaining locks get cleared for sanity.

Definition at line 308 of file MemcLockManager.php.


Member Function Documentation

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

Definition at line 261 of file MemcLockManager.php.

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

Reimplemented from QuorumLockManager.

Definition at line 165 of file MemcLockManager.php.

MemcLockManager::getCache ( lockSrv) [protected]

Get the MemcachedBagOStuff object for a $lockSrv.

Parameters:
$lockSrvstring Server name
Returns:
MemcachedBagOStuff|null

Definition at line 229 of file MemcLockManager.php.

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

Reimplemented from QuorumLockManager.

Definition at line 99 of file MemcLockManager.php.

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

Reimplemented from QuorumLockManager.

Definition at line 219 of file MemcLockManager.php.

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

Definition at line 250 of file MemcLockManager.php.

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

Reimplemented from QuorumLockManager.

Definition at line 211 of file MemcLockManager.php.

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

Definition at line 299 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.

MemcLockManager::$lockExpiry [protected]

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

MemcLockManager::$wikiId = '' [protected]

Definition at line 50 of file MemcLockManager.php.


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