org.infinispan.distribution.ch
Class UnionConsistentHash

java.lang.Object
  extended by org.infinispan.distribution.ch.AbstractConsistentHash
      extended by org.infinispan.distribution.ch.UnionConsistentHash
All Implemented Interfaces:
ConsistentHash

public class UnionConsistentHash
extends AbstractConsistentHash

A delegating wrapper that locates keys by getting a union of locations reported by two other ConsistentHash implementations it delegates to.

Since:
4.0
Author:
Manik Surtani

Nested Class Summary
static class UnionConsistentHash.Externalizer
           
 
Field Summary
 
Fields inherited from class org.infinispan.distribution.ch.AbstractConsistentHash
caches, topologyInfo
 
Constructor Summary
UnionConsistentHash(ConsistentHash oldCH, ConsistentHash newCH)
           
 
Method Summary
 List<Address> getBackupsForNode(Address node, int replCount)
          Returns the nodes that backup data for the supplied node including the node itself.
 List<Address> getCaches()
          Should return a collection of cache addresses in the cluster.
 int getHashId(Address a)
          Returns the value between 0 and the hash space limit, or hash id, for a particular address.
 int getHashSpace()
          Returns the hash space constant for this consistent hash algorithm class.
 ConsistentHash getNewConsistentHash()
           
 ConsistentHash getOldConsistentHash()
           
 List<Address> getStateProvidersOnJoin(Address joiner, int replCount)
          Returns the nodes that would act as state providers when a new node joins: - the nodes for which the joiner is a backup - the nodes that held joiner's state
 List<Address> getStateProvidersOnLeave(Address leaver, int replCount)
          Returns the nodes that need will replicate their state if the specified node crashes.
 List<Address> locate(Object key, int replCount)
          Locates a key, given a replication count (number of copies).
 void setCaches(List<Address> caches)
          Sets the collection of cache addresses in the cluster.
 
Methods inherited from class org.infinispan.distribution.ch.AbstractConsistentHash
getTopologyInfo, isKeyLocalToAddress, locateAll, setTopologyInfo, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

UnionConsistentHash

public UnionConsistentHash(ConsistentHash oldCH,
                           ConsistentHash newCH)
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
Overrides:
setCaches in class AbstractConsistentHash
Parameters:
caches - caches in cluster.

getCaches

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

Returns:
collection of cache addresses

locate

public List<Address> locate(Object key,
                            int replCount)
Description copied from interface: ConsistentHash
Locates a key, given a replication count (number of copies).

Parameters:
key - key to locate
replCount - replication count (number of copies)
Returns:
a list of addresses where the key resides, where this list is a subset of the addresses set in ConsistentHash.setCaches(java.util.List). Should never be null, and should contain replCount elements or the max number of caches available, whichever is smaller.

getHashId

public int getHashId(Address a)
Description copied from interface: ConsistentHash
Returns the value between 0 and the hash space limit, or hash id, for a particular address. If there's no such value for an address, this method will return -1.

Returns:
An int between 0 and hash space if the address is present in the hash wheel, otherwise it returns -1.

getStateProvidersOnLeave

public List<Address> getStateProvidersOnLeave(Address leaver,
                                              int replCount)
Description copied from interface: ConsistentHash
Returns the nodes that need will replicate their state if the specified node crashes. The return collection should contain all the nodes that backup-ed on leaver and one of the nodes which acted as a backup for the leaver .

Pre: leaver must be present in the caches known to this CH, as returned by ConsistentHash.getCaches()

Parameters:
leaver - the node that leaves the cluster

getStateProvidersOnJoin

public List<Address> getStateProvidersOnJoin(Address joiner,
                                             int replCount)
Description copied from interface: ConsistentHash
Returns the nodes that would act as state providers when a new node joins: - the nodes for which the joiner is a backup - the nodes that held joiner's state


getBackupsForNode

public List<Address> getBackupsForNode(Address node,
                                       int replCount)
Description copied from interface: ConsistentHash
Returns the nodes that backup data for the supplied node including the node itself.


getHashSpace

public int getHashSpace()
Description copied from interface: ConsistentHash
Returns the hash space constant for this consistent hash algorithm class. This integer is often used as modulus for arithmetic operations within the algorithm, for example, limiting the range of possible hash values.

Returns:
A positive integer containing the hash space constant or 0 is not supported by implementation.

getNewConsistentHash

public ConsistentHash getNewConsistentHash()

getOldConsistentHash

public ConsistentHash getOldConsistentHash()


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