MediaWiki  1.30.0
HashRing Class Reference

Convenience class for weighted consistent hash rings. More...

Collaboration diagram for HashRing:

Public Member Functions

 __construct (array $map)
 
 ejectFromLiveRing ( $location, $ttl)
 Remove a location from the "live" hash ring. More...
 
 getLiveLocation ( $item)
 Get the location of an item on the "live" ring. More...
 
 getLiveLocations ( $item, $limit)
 Get the location of an item on the "live" ring, as well as the next locations. More...
 
 getLiveLocationWeights ()
 Get the map of "live" locations to weight (ignores 0-weight items) More...
 
 getLiveRing ()
 Get the "live" hash ring (which does not include ejected locations) More...
 
 getLocation ( $item)
 Get the location of an item on the ring. More...
 
 getLocations ( $item, $limit)
 Get the location of an item on the ring, as well as the next locations. More...
 
 getLocationWeights ()
 Get the map of locations to weight (ignores 0-weight items) More...
 
 newWithoutLocation ( $location)
 Get a new hash ring with a location removed from the ring. More...
 

Public Attributes

const RING_SIZE = 268435456
 

Protected Attributes

Array $ejectionExpiries = []
 (location => UNIX timestamp) More...
 
int $ejectionNextExpiry = INF
 UNIX timestamp. More...
 
HashRing null $liveRing
 
Array $ring = []
 (location => (start, end)) More...
 
Array $sourceMap = []
 (location => weight) More...
 

Detailed Description

Convenience class for weighted consistent hash rings.

Since
1.22

Definition at line 28 of file HashRing.php.

Constructor & Destructor Documentation

◆ __construct()

HashRing::__construct ( array  $map)
Parameters
array$map(location => weight)

Definition at line 46 of file HashRing.php.

References $hashes, as, captcha-old\count, key, RING_SIZE, and use.

Member Function Documentation

◆ ejectFromLiveRing()

HashRing::ejectFromLiveRing (   $location,
  $ttl 
)

Remove a location from the "live" hash ring.

Parameters
string$location
int$ttlSeconds
Returns
bool Whether some non-ejected locations are left

Definition at line 158 of file HashRing.php.

References captcha-old\count.

Referenced by JobQueueFederated\tryJobInsertions().

◆ getLiveLocation()

HashRing::getLiveLocation (   $item)

Get the location of an item on the "live" ring.

Parameters
string$item
Returns
string Location
Exceptions
UnexpectedValueException

Definition at line 213 of file HashRing.php.

References getLiveRing().

Referenced by JobQueueFederated\tryJobInsertions().

◆ getLiveLocations()

HashRing::getLiveLocations (   $item,
  $limit 
)

Get the location of an item on the "live" ring, as well as the next locations.

Parameters
string$item
int$limitMaximum number of locations to return
Returns
array List of locations
Exceptions
UnexpectedValueException

Definition at line 225 of file HashRing.php.

References getLiveRing().

◆ getLiveLocationWeights()

HashRing::getLiveLocationWeights ( )

Get the map of "live" locations to weight (ignores 0-weight items)

Returns
array
Exceptions
UnexpectedValueException

Definition at line 235 of file HashRing.php.

References getLiveRing().

Referenced by JobQueueFederated\tryJobInsertions().

◆ getLiveRing()

HashRing::getLiveRing ( )

Get the "live" hash ring (which does not include ejected locations)

Returns
HashRing
Exceptions
UnexpectedValueException

Definition at line 176 of file HashRing.php.

References $liveRing, captcha-old\count, and use.

Referenced by JobQueueFederated\doBatchPush(), getLiveLocation(), getLiveLocations(), and getLiveLocationWeights().

◆ getLocation()

HashRing::getLocation (   $item)

Get the location of an item on the ring.

Parameters
string$item
Returns
string Location

Definition at line 86 of file HashRing.php.

References getLocations().

◆ getLocations()

HashRing::getLocations (   $item,
  $limit 
)

Get the location of an item on the ring, as well as the next locations.

Parameters
string$item
int$limitMaximum number of locations to return
Returns
array List of locations

Definition at line 99 of file HashRing.php.

References as, captcha-old\count, and list.

Referenced by getLocation().

◆ getLocationWeights()

HashRing::getLocationWeights ( )

Get the map of locations to weight (ignores 0-weight items)

Returns
array

Definition at line 134 of file HashRing.php.

References $sourceMap.

◆ newWithoutLocation()

HashRing::newWithoutLocation (   $location)

Get a new hash ring with a location removed from the ring.

Parameters
string$location
Returns
HashRing|bool Returns false if no non-zero weighted spots are left

Definition at line 144 of file HashRing.php.

References $sourceMap, and captcha-old\count.

Member Data Documentation

◆ $ejectionExpiries

Array HashRing::$ejectionExpiries = []
protected

(location => UNIX timestamp)

Definition at line 37 of file HashRing.php.

◆ $ejectionNextExpiry

int HashRing::$ejectionNextExpiry = INF
protected

UNIX timestamp.

Definition at line 39 of file HashRing.php.

◆ $liveRing

HashRing null HashRing::$liveRing
protected

Definition at line 35 of file HashRing.php.

Referenced by getLiveRing().

◆ $ring

Array HashRing::$ring = []
protected

(location => (start, end))

Definition at line 32 of file HashRing.php.

◆ $sourceMap

Array HashRing::$sourceMap = []
protected

(location => weight)

Definition at line 30 of file HashRing.php.

Referenced by getLocationWeights(), and newWithoutLocation().

◆ RING_SIZE

const HashRing::RING_SIZE = 268435456

Definition at line 41 of file HashRing.php.

Referenced by __construct().


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