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)
           
 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)
           
abstract  int getReplicationFactor()
          calculate the RF based on strategy_options.
 IWriteResponseHandler getWriteResponseHandler(java.util.Collection<java.net.InetAddress> writeEndpoints, org.apache.cassandra.thrift.ConsistencyLevel consistency_level)
           
 void invalidateCachedTokenEndpointValues()
           
abstract  void validateOptions()
           
protected  void validateReplicationFactor(java.lang.String rf)
           
 
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)
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

calculateNaturalEndpoints

public abstract java.util.List<java.net.InetAddress> calculateNaturalEndpoints(Token searchToken,
                                                                               TokenMetadata tokenMetadata)
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
See Also:
getNaturalEndpoints(org.apache.cassandra.dht.Token)

getWriteResponseHandler

public IWriteResponseHandler getWriteResponseHandler(java.util.Collection<java.net.InetAddress> writeEndpoints,
                                                     org.apache.cassandra.thrift.ConsistencyLevel consistency_level)

getReplicationFactor

public abstract int getReplicationFactor()
calculate the RF based on strategy_options. When overwriting, ensure that this get() is FAST, as this is called often.

Returns:
the replication factor

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()

validateOptions

public abstract void validateOptions()
                              throws ConfigurationException
Throws:
ConfigurationException

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

validateReplicationFactor

protected void validateReplicationFactor(java.lang.String rf)
                                  throws ConfigurationException
Throws:
ConfigurationException


Copyright © 2011 The Apache Software Foundation