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  List<Address> caches
           
protected  TopologyInfo topologyInfo
           
 
Constructor Summary
AbstractConsistentHash()
           
 
Method Summary
 TopologyInfo getTopologyInfo()
           
 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(List<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, getCaches, getHashId, getHashSpace, getStateProvidersOnJoin, getStateProvidersOnLeave, locate
 

Field Detail

caches

protected volatile List<Address> caches

topologyInfo

protected TopologyInfo topologyInfo
Constructor Detail

AbstractConsistentHash

public AbstractConsistentHash()
Method Detail

setCaches

public void setCaches(List<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 - caches in cluster.

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

getTopologyInfo

public TopologyInfo getTopologyInfo()

toString

public String toString()
Overrides:
toString in class Object

Google Analytics

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