Class ReplicatedConsistentHash
java.lang.Object
org.infinispan.distribution.ch.impl.ReplicatedConsistentHash
- All Implemented Interfaces:
ConsistentHash
Special implementation of
ConsistentHash
for replicated caches.
The hash-space has several segments owned by all members and the primary ownership of each segment is evenly
spread between members.- Since:
- 5.2
- Author:
- Dan Berindei, anistor@redhat.com
-
Nested Class Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
The capacity factor of each member.Should return the addresses of the nodes used to create this consistent hash.int
int
Returns the segments that this cache member is the primary owner for.Returns a string containing all the segments and their associated addresses.getSegmentsForOwner
(Address owner) Returns the segments owned by a cache member.int
hashCode()
boolean
boolean
isSegmentLocalToNode
(Address nodeAddress, int segmentId) Check if a segment is local to a given member.locateOwnersForSegment
(int segmentId) locatePrimaryOwnerForSegment
(int segmentId) remapAddresses
(UnaryOperator<Address> remapper) Returns a new ConsistentHash with the addresses remapped according to the providedUnaryOperator
.void
Writes this ConsistentHash to the specified scoped state.toString()
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.infinispan.distribution.ch.ConsistentHash
remapAddressRemoveMissing
-
Constructor Details
-
ReplicatedConsistentHash
-
ReplicatedConsistentHash
-
-
Method Details
-
union
-
getNumSegments
public int getNumSegments()- Specified by:
getNumSegments
in interfaceConsistentHash
- Returns:
- The actual number of hash space segments. Note that it may not be the same as the number of segments passed in at creation time.
-
getNumOwners
public int getNumOwners() -
getMembers
Description copied from interface:ConsistentHash
Should return the addresses of the nodes used to create this consistent hash.- Specified by:
getMembers
in interfaceConsistentHash
- Returns:
- set of node addresses.
-
locateOwnersForSegment
- Specified by:
locateOwnersForSegment
in interfaceConsistentHash
- Returns:
- All the nodes that own a given hash space segment, first address is the primary owner. The returned list is unmodifiable.
-
locatePrimaryOwnerForSegment
- Specified by:
locatePrimaryOwnerForSegment
in interfaceConsistentHash
- Returns:
- The primary owner of a given hash space segment. This is equivalent to
locateOwnersForSegment(segmentId).get(0)
but is more efficient
-
getSegmentsForOwner
Description copied from interface:ConsistentHash
Returns the segments owned by a cache member.- Specified by:
getSegmentsForOwner
in interfaceConsistentHash
- Parameters:
owner
- the address of the member- Returns:
- a non-null set of segment IDs, may or may not be unmodifiable, which shouldn't be modified by caller.
The set is empty if
owner
is not a member of the consistent hash.
-
getPrimarySegmentsForOwner
Description copied from interface:ConsistentHash
Returns the segments that this cache member is the primary owner for.- Specified by:
getPrimarySegmentsForOwner
in interfaceConsistentHash
- Parameters:
owner
- the address of the member- Returns:
- a non-null set of segment IDs, may or may not be unmodifiable, which shouldn't be modified by caller.
The set is empty if
owner
is not a member of the consistent hash.
-
getRoutingTableAsString
Description copied from interface:ConsistentHash
Returns a string containing all the segments and their associated addresses.- Specified by:
getRoutingTableAsString
in interfaceConsistentHash
-
isSegmentLocalToNode
Description copied from interface:ConsistentHash
Check if a segment is local to a given member.Implementation note: normally key-based method are implemented based on segment-based methods. Here, however, we need a default implementation for the segment-based method for backwards-compatibility reasons.
- Specified by:
isSegmentLocalToNode
in interfaceConsistentHash
-
isReplicated
public boolean isReplicated()- Specified by:
isReplicated
in interfaceConsistentHash
- Returns:
true
if every member owns every segment. This allows callers to skip computing the segment of a key in some cases.
-
toScopedState
Description copied from interface:ConsistentHash
Writes this ConsistentHash to the specified scoped state. Before invoking this method, the ConsistentHash addresses will have to be replaced with their correspondingPersistentUUID
s- Specified by:
toScopedState
in interfaceConsistentHash
- Parameters:
state
- the state to which this ConsistentHash will be written
-
remapAddresses
Description copied from interface:ConsistentHash
Returns a new ConsistentHash with the addresses remapped according to the providedUnaryOperator
. If an address cannot me remapped (i.e. the remapper returns null) this method should return null.- Specified by:
remapAddresses
in interfaceConsistentHash
- Parameters:
remapper
- the remapper which given an address replaces it with another one- Returns:
- the remapped ConsistentHash or null if one of the remapped addresses is null
-
getCapacityFactors
Description copied from interface:ConsistentHash
The capacity factor of each member. Determines the relative capacity of each node compared to the others. Ifnull
, all the members are assumed to have a capacity factor of 1.- Specified by:
getCapacityFactors
in interfaceConsistentHash
-
toString
-
hashCode
public int hashCode() -
equals
-