org.infinispan.distribution.ch
Class AbstractConsistentHash

java.lang.Object
  extended by org.infinispan.distribution.ch.AbstractConsistentHash
All Implemented Interfaces:
ConsistentHash
Direct Known Subclasses:
AbstractWheelConsistentHash, ExperimentalDefaultConsistentHash, UnionConsistentHash

public abstract class AbstractConsistentHash
extends Object
implements ConsistentHash

An abstract consistent hash implementation that handles common implementations of certain methods. In particular, default implementations of locateAll(java.util.Collection, int) and isKeyLocalToAddress(org.infinispan.remoting.transport.Address, Object, int).

The versions provided here are relatively inefficient in that they call ConsistentHash.locate(Object, int) first (and sometimes in a loop). Depending on the algorithm used, there may be more efficient ways to achieve the same results and in such cases the methods provided here should be overridden.

Since:
4.0
Author:
Manik Surtani, Mircea.Markus@jboss.com

Field Summary
protected  Set<Address> caches
           
 
Constructor Summary
AbstractConsistentHash()
           
 
Method Summary
 Set<Address> getCaches()
          Should return a collection of cache addresses in the cluster.
 boolean isKeyLocalToAddress(Address a, Object key, int replCount)
          Test to see whether a key is mapped to a given address.
 Map<Object,List<Address>> locateAll(Collection<Object> keys, int replCount)
          The logical equivalent of calling ConsistentHash.locate(Object, int) multiple times for each key in the collection of keys.
 void setCaches(Set<Address> caches)
          Sets the collection of cache addresses in the cluster.
 void setTopologyInfo(TopologyInfo topologyInfo)
          Sets cluster topology information that can be used by CH to improve fault tolerance by smart choosing of backups.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.infinispan.distribution.ch.ConsistentHash
getBackupsForNode, getHashId, getHashSpace, getStateProvidersOnJoin, getStateProvidersOnLeave, locate
 

Field Detail

caches

protected volatile Set<Address> caches
Constructor Detail

AbstractConsistentHash

public AbstractConsistentHash()
Method Detail

setCaches

public void setCaches(Set<Address> caches)
Description copied from interface: ConsistentHash
Sets the collection of cache addresses in the cluster. The implementation should store these internally and use these to locate keys.

Specified by:
setCaches in interface ConsistentHash
Parameters:
caches - A set of unique caches in cluster.

getCaches

public Set<Address> getCaches()
Description copied from interface: ConsistentHash
Should return a collection of cache addresses in the cluster.

Specified by:
getCaches in interface ConsistentHash
Returns:
set of unique of cache addresses

locateAll

public Map<Object,List<Address>> locateAll(Collection<Object> keys,
                                           int replCount)
Description copied from interface: ConsistentHash
The logical equivalent of calling ConsistentHash.locate(Object, int) multiple times for each key in the collection of keys. Implementations may be optimised for such a bulk lookup, or may just repeatedly call ConsistentHash.locate(Object, int).

Specified by:
locateAll in interface ConsistentHash
Parameters:
keys - keys to locate
replCount - replication count (number of copies) for each key
Returns:
Map of locations, keyed on key.

isKeyLocalToAddress

public boolean isKeyLocalToAddress(Address a,
                                   Object key,
                                   int replCount)
Description copied from interface: ConsistentHash
Test to see whether a key is mapped to a given address.

Specified by:
isKeyLocalToAddress in interface ConsistentHash
Parameters:
a - address to test
key - key to test
replCount - repl count
Returns:
true if the key is mapped to the address; false otherwise

setTopologyInfo

public void setTopologyInfo(TopologyInfo topologyInfo)
Description copied from interface: ConsistentHash
Sets cluster topology information that can be used by CH to improve fault tolerance by smart choosing of backups. More about it here

Specified by:
setTopologyInfo in interface ConsistentHash

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2011 JBoss, a division of Red Hat. All Rights Reserved.