org.apache.cassandra.locator
Class AbstractReplicationStrategy

java.lang.Object
  extended by org.apache.cassandra.locator.AbstractReplicationStrategy
Direct Known Subclasses:
LocalStrategy, NetworkTopologyStrategy, OldNetworkTopologyStrategy, SimpleStrategy

public abstract class AbstractReplicationStrategy
extends java.lang.Object

A abstract parent for all replication strategies.


Field Summary
 java.util.Map<java.lang.String,java.lang.String> configOptions
           
 IEndpointSnitch snitch
           
 java.lang.String table
           
 
Method Summary
 void cacheEndpoint(Token t, java.util.ArrayList<java.net.InetAddress> addr)
           
abstract  java.util.List<java.net.InetAddress> calculateNaturalEndpoints(Token searchToken, TokenMetadata tokenMetadata)
          calculate the natural endpoints for the given token
 void clearEndpointCache()
           
static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table, java.lang.Class<? extends AbstractReplicationStrategy> strategyClass, TokenMetadata tokenMetadata, IEndpointSnitch snitch, java.util.Map<java.lang.String,java.lang.String> strategyOptions)
           
static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table, java.lang.String strategyClassName, TokenMetadata tokenMetadata, IEndpointSnitch snitch, java.util.Map<java.lang.String,java.lang.String> strategyOptions)
           
 com.google.common.collect.Multimap<java.net.InetAddress,Range> getAddressRanges()
           
 com.google.common.collect.Multimap<java.net.InetAddress,Range> getAddressRanges(TokenMetadata metadata)
           
 java.util.ArrayList<java.net.InetAddress> getCachedEndpoints(Token t)
           
static java.lang.Class<AbstractReplicationStrategy> getClass(java.lang.String cls)
           
 com.google.common.collect.Multimap<java.net.InetAddress,java.net.InetAddress> getHintedEndpoints(java.util.Collection<java.net.InetAddress> targets)
          returns Multimap of {live destination: ultimate targets}, where if target is not the same as the destination, it is a "hinted" write, and will need to be sent to the ultimate target when it becomes alive again.
 java.util.ArrayList<java.net.InetAddress> getNaturalEndpoints(Token searchToken)
          get the (possibly cached) endpoints that should store the given Token Note that while the endpoints are conceptually a Set (no duplicates will be included), we return a List to avoid an extra allocation when sorting by proximity later
 java.util.Collection<Range> getPendingAddressRanges(TokenMetadata metadata, Token pendingToken, java.net.InetAddress pendingAddress)
           
 com.google.common.collect.Multimap<Range,java.net.InetAddress> getRangeAddresses(TokenMetadata metadata)
           
 int getReplicationFactor()
           
 IWriteResponseHandler getWriteResponseHandler(java.util.Collection<java.net.InetAddress> writeEndpoints, com.google.common.collect.Multimap<java.net.InetAddress,java.net.InetAddress> hintedEndpoints, ConsistencyLevel consistency_level)
           
 void invalidateCachedTokenEndpointValues()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

table

public final java.lang.String table

configOptions

public final java.util.Map<java.lang.String,java.lang.String> configOptions

snitch

public IEndpointSnitch snitch
Method Detail

getCachedEndpoints

public java.util.ArrayList<java.net.InetAddress> getCachedEndpoints(Token t)

cacheEndpoint

public void cacheEndpoint(Token t,
                          java.util.ArrayList<java.net.InetAddress> addr)

clearEndpointCache

public void clearEndpointCache()

getNaturalEndpoints

public java.util.ArrayList<java.net.InetAddress> getNaturalEndpoints(Token searchToken)
                                                              throws java.lang.IllegalStateException
get the (possibly cached) endpoints that should store the given Token Note that while the endpoints are conceptually a Set (no duplicates will be included), we return a List to avoid an extra allocation when sorting by proximity later

Parameters:
searchToken - the token the natural endpoints are requested for
Returns:
a copy of the natural endpoints for the given token
Throws:
java.lang.IllegalStateException - if the number of requested replicas is greater than the number of known endpoints

calculateNaturalEndpoints

public abstract java.util.List<java.net.InetAddress> calculateNaturalEndpoints(Token searchToken,
                                                                               TokenMetadata tokenMetadata)
                                                                        throws java.lang.IllegalStateException
calculate the natural endpoints for the given token

Parameters:
searchToken - the token the natural endpoints are requested for
Returns:
a copy of the natural endpoints for the given token
Throws:
java.lang.IllegalStateException - if the number of requested replicas is greater than the number of known endpoints
See Also:
getNaturalEndpoints(org.apache.cassandra.dht.Token)

getWriteResponseHandler

public IWriteResponseHandler getWriteResponseHandler(java.util.Collection<java.net.InetAddress> writeEndpoints,
                                                     com.google.common.collect.Multimap<java.net.InetAddress,java.net.InetAddress> hintedEndpoints,
                                                     ConsistencyLevel consistency_level)

getReplicationFactor

public int getReplicationFactor()

getHintedEndpoints

public com.google.common.collect.Multimap<java.net.InetAddress,java.net.InetAddress> getHintedEndpoints(java.util.Collection<java.net.InetAddress> targets)
returns Multimap of {live destination: ultimate targets}, where if target is not the same as the destination, it is a "hinted" write, and will need to be sent to the ultimate target when it becomes alive again.


getAddressRanges

public com.google.common.collect.Multimap<java.net.InetAddress,Range> getAddressRanges(TokenMetadata metadata)

getRangeAddresses

public com.google.common.collect.Multimap<Range,java.net.InetAddress> getRangeAddresses(TokenMetadata metadata)

getAddressRanges

public com.google.common.collect.Multimap<java.net.InetAddress,Range> getAddressRanges()

getPendingAddressRanges

public java.util.Collection<Range> getPendingAddressRanges(TokenMetadata metadata,
                                                           Token pendingToken,
                                                           java.net.InetAddress pendingAddress)

invalidateCachedTokenEndpointValues

public void invalidateCachedTokenEndpointValues()

createReplicationStrategy

public static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table,
                                                                    java.lang.Class<? extends AbstractReplicationStrategy> strategyClass,
                                                                    TokenMetadata tokenMetadata,
                                                                    IEndpointSnitch snitch,
                                                                    java.util.Map<java.lang.String,java.lang.String> strategyOptions)
                                                             throws ConfigurationException
Throws:
ConfigurationException

createReplicationStrategy

public static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table,
                                                                    java.lang.String strategyClassName,
                                                                    TokenMetadata tokenMetadata,
                                                                    IEndpointSnitch snitch,
                                                                    java.util.Map<java.lang.String,java.lang.String> strategyOptions)
                                                             throws ConfigurationException
Throws:
ConfigurationException

getClass

public static java.lang.Class<AbstractReplicationStrategy> getClass(java.lang.String cls)
                                                             throws ConfigurationException
Throws:
ConfigurationException


Copyright © 2011 The Apache Software Foundation