@Immutable public class DefaultConsistentHash extends Object implements ConsistentHash
ConsistentHash
implementation. This object is immutable.Modifier and Type | Class and Description |
---|---|
static class |
DefaultConsistentHash.Externalizer |
Constructor and Description |
---|
DefaultConsistentHash(Hash hashFunction,
int numOwners,
int numSegments,
List<Address> members,
Map<Address,Float> capacityFactors,
List<Address>[] segmentOwners) |
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object o) |
Map<Address,Float> |
getCapacityFactors() |
Hash |
getHashFunction() |
List<Address> |
getMembers()
Should return the addresses of the nodes used to create this consistent hash.
|
int |
getNormalizedHash(Object key) |
int |
getNumOwners() |
int |
getNumSegments() |
Set<Integer> |
getPrimarySegmentsForOwner(Address owner)
Returns the segments that this cache member is the primary owner for.
|
String |
getRoutingTableAsString()
Returns a string containing all the segments and their associated addresses.
|
int |
getSegment(Object key) |
List<Integer> |
getSegmentEndHashes()
Deprecated.
Since 8.2, use
HashFunctionPartitioner.getSegmentEndHashes() instead. |
Set<Integer> |
getSegmentsForOwner(Address owner)
Returns the segments owned by a cache member.
|
int |
hashCode() |
boolean |
isKeyLocalToNode(Address nodeAddress,
Object key)
Test to see whether a key is owned by a given node.
|
boolean |
isSegmentLocalToNode(Address nodeAddress,
int segmentId)
Check if a segment is local to a given member.
|
Set<Address> |
locateAllOwners(Collection<Object> keys) |
List<Address> |
locateOwners(Object key)
Finds all the owners of a key.
|
List<Address> |
locateOwnersForSegment(int segmentId) |
Address |
locatePrimaryOwner(Object key)
Should be equivalent to return the first element of
ConsistentHash.locateOwners(java.lang.Object) . |
Address |
locatePrimaryOwnerForSegment(int segmentId) |
String |
prettyPrintOwnership() |
void |
toScopedState(ScopedPersistentState state)
Writes this ConsistentHash to the specified scoped state.
|
String |
toString() |
DefaultConsistentHash |
union(DefaultConsistentHash dch2)
Merges two consistent hash objects that have the same number of segments, numOwners and hash function.
|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
isReplicated
public Hash getHashFunction()
getHashFunction
in interface ConsistentHash
public int getNumSegments()
getNumSegments
in interface ConsistentHash
public Set<Integer> getSegmentsForOwner(Address owner)
ConsistentHash
getSegmentsForOwner
in interface ConsistentHash
owner
- the address of the memberpublic Set<Integer> getPrimarySegmentsForOwner(Address owner)
ConsistentHash
getPrimarySegmentsForOwner
in interface ConsistentHash
owner
- the address of the memberpublic int getSegment(Object key)
getSegment
in interface ConsistentHash
public int getNormalizedHash(Object key)
@Deprecated public List<Integer> getSegmentEndHashes()
HashFunctionPartitioner.getSegmentEndHashes()
instead.public List<Address> locateOwnersForSegment(int segmentId)
locateOwnersForSegment
in interface ConsistentHash
public Address locatePrimaryOwnerForSegment(int segmentId)
locatePrimaryOwnerForSegment
in interface ConsistentHash
locateOwnersForSegment(segmentId).get(0)
but is more efficientpublic List<Address> getMembers()
ConsistentHash
getMembers
in interface ConsistentHash
public int getNumOwners()
getNumOwners
in interface ConsistentHash
public Address locatePrimaryOwner(Object key)
ConsistentHash
ConsistentHash.locateOwners(java.lang.Object)
.
Useful as a performance optimization, as this is a frequently needed information.locatePrimaryOwner
in interface ConsistentHash
key
- key to locatepublic List<Address> locateOwners(Object key)
ConsistentHash
locateOwners
in interface ConsistentHash
key
- key to locatenull
, and it will always have at least 1 element.public Set<Address> locateAllOwners(Collection<Object> keys)
locateAllOwners
in interface ConsistentHash
public boolean isKeyLocalToNode(Address nodeAddress, Object key)
ConsistentHash
isKeyLocalToNode
in interface ConsistentHash
nodeAddress
- address of the node to testkey
- key to testtrue
if the key is mapped to the address; false
otherwisepublic boolean isSegmentLocalToNode(Address nodeAddress, int segmentId)
ConsistentHash
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.
isSegmentLocalToNode
in interface ConsistentHash
public String getRoutingTableAsString()
ConsistentHash
getRoutingTableAsString
in interface ConsistentHash
public DefaultConsistentHash union(DefaultConsistentHash dch2)
public String prettyPrintOwnership()
public void toScopedState(ScopedPersistentState state)
ConsistentHash
toScopedState
in interface ConsistentHash
state
- the state to which this ConsistentHash will be writtenCopyright © 2023 JBoss, a division of Red Hat. All rights reserved.