voldemort.store.routed
Class PipelineRoutedStore

java.lang.Object
  extended by voldemort.store.AbstractStore<ByteArray,byte[],byte[]>
      extended by voldemort.store.routed.RoutedStore
          extended by voldemort.store.routed.PipelineRoutedStore
All Implemented Interfaces:
Store<ByteArray,byte[],byte[]>

public class PipelineRoutedStore
extends RoutedStore

A Store which multiplexes requests to different internal Stores


Field Summary
protected  HintedHandoffStrategy handoffStrategy
           
protected  java.util.Map<java.lang.Integer,NonblockingStore> nonblockingSlopStores
           
protected  java.util.Map<java.lang.Integer,NonblockingStore> nonblockingStores
           
protected  java.util.Map<java.lang.Integer,Store<ByteArray,Slop,byte[]>> slopStores
           
 
Fields inherited from class voldemort.store.routed.RoutedStore
failureDetector, innerStores, logger, readRepairer, repairReads, routingStrategy, storeDef, time, timeoutConfig
 
Constructor Summary
PipelineRoutedStore(java.util.Map<java.lang.Integer,Store<ByteArray,byte[],byte[]>> innerStores, java.util.Map<java.lang.Integer,NonblockingStore> nonblockingStores, java.util.Map<java.lang.Integer,Store<ByteArray,Slop,byte[]>> slopStores, java.util.Map<java.lang.Integer,NonblockingStore> nonblockingSlopStores, Cluster cluster, StoreDefinition storeDef, FailureDetector failureDetector, boolean repairReads, TimeoutConfig timeoutConfig, int clientZoneId, boolean isJmxEnabled, int jmxId, ZoneAffinity zoneAffinity)
          Create a PipelineRoutedStore
 
Method Summary
 void close()
          Close the store.
 boolean delete(ByteArray key, Version version)
          Delete all entries prior to the given version
protected  boolean delete(ByteArray key, Version version, long deleteOpTimeout)
           
 boolean delete(CompositeVoldemortRequest<ByteArray,byte[]> request)
          Delete all entries prior to the given version
 java.util.List<Versioned<byte[]>> get(ByteArray key, byte[] transforms)
          Get the value associated with the given key
 java.util.List<Versioned<byte[]>> get(ByteArray key, byte[] transforms, long getOpTimeout)
           
 java.util.List<Versioned<byte[]>> get(CompositeVoldemortRequest<ByteArray,byte[]> request)
          Get the value associated with the given key
 java.util.Map<ByteArray,java.util.List<Versioned<byte[]>>> getAll(CompositeVoldemortRequest<ByteArray,byte[]> request)
          Get the values associated with the given keys and returns them in a Map of keys to a list of versioned values.
 java.util.Map<ByteArray,java.util.List<Versioned<byte[]>>> getAll(java.lang.Iterable<ByteArray> keys, java.util.Map<ByteArray,byte[]> transforms)
          Get the values associated with the given keys and returns them in a Map of keys to a list of versioned values.
 java.util.Map<ByteArray,java.util.List<Versioned<byte[]>>> getAll(java.lang.Iterable<ByteArray> keys, java.util.Map<ByteArray,byte[]> transforms, long getAllOpTimeoutInMs)
           
 java.util.List<Version> getVersions(ByteArray key)
          Get the versions associated with the given key.
 boolean isHintedHandoffEnabled()
           
static boolean isSlopableFailure(java.lang.Object response)
           
 void put(ByteArray key, Versioned<byte[]> versioned, byte[] transforms)
          Associate the value with the key and version in this store
 void put(ByteArray key, Versioned<byte[]> versioned, byte[] transforms, long putOpTimeoutInMs)
           
 void put(CompositeVoldemortRequest<ByteArray,byte[]> request)
          Associate the value with the key and version in this store
 
Methods inherited from class voldemort.store.routed.RoutedStore
getCapability, getInnerStores, updateRoutingStrategy
 
Methods inherited from class voldemort.store.AbstractStore
getName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

nonblockingStores

protected final java.util.Map<java.lang.Integer,NonblockingStore> nonblockingStores

slopStores

protected final java.util.Map<java.lang.Integer,Store<ByteArray,Slop,byte[]>> slopStores

nonblockingSlopStores

protected final java.util.Map<java.lang.Integer,NonblockingStore> nonblockingSlopStores

handoffStrategy

protected final HintedHandoffStrategy handoffStrategy
Constructor Detail

PipelineRoutedStore

public PipelineRoutedStore(java.util.Map<java.lang.Integer,Store<ByteArray,byte[],byte[]>> innerStores,
                           java.util.Map<java.lang.Integer,NonblockingStore> nonblockingStores,
                           java.util.Map<java.lang.Integer,Store<ByteArray,Slop,byte[]>> slopStores,
                           java.util.Map<java.lang.Integer,NonblockingStore> nonblockingSlopStores,
                           Cluster cluster,
                           StoreDefinition storeDef,
                           FailureDetector failureDetector,
                           boolean repairReads,
                           TimeoutConfig timeoutConfig,
                           int clientZoneId,
                           boolean isJmxEnabled,
                           int jmxId,
                           ZoneAffinity zoneAffinity)
Create a PipelineRoutedStore

Parameters:
innerStores - The mapping of node to client
nonblockingStores -
slopStores - The stores for hints
nonblockingSlopStores -
cluster - Cluster definition
storeDef - Store definition
Method Detail

get

public java.util.List<Versioned<byte[]>> get(ByteArray key,
                                             byte[] transforms)
Description copied from interface: Store
Get the value associated with the given key

Specified by:
get in interface Store<ByteArray,byte[],byte[]>
Overrides:
get in class AbstractStore<ByteArray,byte[],byte[]>
Parameters:
key - The key to check for
Returns:
The value associated with the key or an empty list if no values are found.

get

public java.util.List<Versioned<byte[]>> get(ByteArray key,
                                             byte[] transforms,
                                             long getOpTimeout)

getAll

public java.util.Map<ByteArray,java.util.List<Versioned<byte[]>>> getAll(java.lang.Iterable<ByteArray> keys,
                                                                         java.util.Map<ByteArray,byte[]> transforms)
                                                                  throws VoldemortException
Description copied from interface: Store
Get the values associated with the given keys and returns them in a Map of keys to a list of versioned values. Note that the returned map will only contain entries for the keys which have a value associated with them.

Specified by:
getAll in interface Store<ByteArray,byte[],byte[]>
Overrides:
getAll in class AbstractStore<ByteArray,byte[],byte[]>
Parameters:
keys - The keys to check for.
Returns:
A Map of keys to a list of versioned values.
Throws:
VoldemortException

getAll

public java.util.Map<ByteArray,java.util.List<Versioned<byte[]>>> getAll(java.lang.Iterable<ByteArray> keys,
                                                                         java.util.Map<ByteArray,byte[]> transforms,
                                                                         long getAllOpTimeoutInMs)
                                                                  throws VoldemortException
Throws:
VoldemortException

getVersions

public java.util.List<Version> getVersions(ByteArray key)
Description copied from interface: Store
Get the versions associated with the given key. This is used in a put call to write a new value for this key

Specified by:
getVersions in interface Store<ByteArray,byte[],byte[]>
Overrides:
getVersions in class AbstractStore<ByteArray,byte[],byte[]>
Parameters:
key - The key to retrieve the versions for
Returns:
List of Versions associated with this key.

delete

public boolean delete(ByteArray key,
                      Version version)
               throws VoldemortException
Description copied from interface: Store
Delete all entries prior to the given version

Specified by:
delete in interface Store<ByteArray,byte[],byte[]>
Overrides:
delete in class AbstractStore<ByteArray,byte[],byte[]>
Parameters:
key - The key to delete
version - The current value of the key
Returns:
True if anything was deleted
Throws:
VoldemortException

delete

protected boolean delete(ByteArray key,
                         Version version,
                         long deleteOpTimeout)
                  throws VoldemortException
Throws:
VoldemortException

isHintedHandoffEnabled

public boolean isHintedHandoffEnabled()

put

public void put(ByteArray key,
                Versioned<byte[]> versioned,
                byte[] transforms)
         throws VoldemortException
Description copied from interface: Store
Associate the value with the key and version in this store

Specified by:
put in interface Store<ByteArray,byte[],byte[]>
Overrides:
put in class AbstractStore<ByteArray,byte[],byte[]>
Parameters:
key - The key to use
versioned - The value to store and its version.
Throws:
VoldemortException

put

public void put(ByteArray key,
                Versioned<byte[]> versioned,
                byte[] transforms,
                long putOpTimeoutInMs)
         throws VoldemortException
Throws:
VoldemortException

close

public void close()
Description copied from interface: Store
Close the store.

Specified by:
close in interface Store<ByteArray,byte[],byte[]>
Overrides:
close in class RoutedStore

get

public java.util.List<Versioned<byte[]>> get(CompositeVoldemortRequest<ByteArray,byte[]> request)
                                      throws VoldemortException
Description copied from interface: Store
Get the value associated with the given key

Specified by:
get in interface Store<ByteArray,byte[],byte[]>
Overrides:
get in class AbstractStore<ByteArray,byte[],byte[]>
Parameters:
request - Contains the key to check for and associated transforms
Returns:
The value associated with the key or an empty list if no values are found.
Throws:
VoldemortException

getAll

public java.util.Map<ByteArray,java.util.List<Versioned<byte[]>>> getAll(CompositeVoldemortRequest<ByteArray,byte[]> request)
                                                                  throws VoldemortException
Description copied from interface: Store
Get the values associated with the given keys and returns them in a Map of keys to a list of versioned values. Note that the returned map will only contain entries for the keys which have a value associated with them.

Specified by:
getAll in interface Store<ByteArray,byte[],byte[]>
Overrides:
getAll in class AbstractStore<ByteArray,byte[],byte[]>
Parameters:
request - Contains the keys to check for.
Returns:
A Map of keys to a list of versioned values.
Throws:
VoldemortException

put

public void put(CompositeVoldemortRequest<ByteArray,byte[]> request)
         throws VoldemortException
Description copied from interface: Store
Associate the value with the key and version in this store

Specified by:
put in interface Store<ByteArray,byte[],byte[]>
Overrides:
put in class AbstractStore<ByteArray,byte[],byte[]>
Parameters:
request - Contains the key to use along with the value and version to use.
Throws:
VoldemortException

delete

public boolean delete(CompositeVoldemortRequest<ByteArray,byte[]> request)
               throws VoldemortException
Description copied from interface: Store
Delete all entries prior to the given version

Specified by:
delete in interface Store<ByteArray,byte[],byte[]>
Overrides:
delete in class AbstractStore<ByteArray,byte[],byte[]>
Parameters:
request - Contains the key to delete and current version of the key
Returns:
True if anything was deleted
Throws:
VoldemortException

isSlopableFailure

public static boolean isSlopableFailure(java.lang.Object response)


Jay Kreps, Roshan Sumbaly, Alex Feinberg, Bhupesh Bansal, Lei Gao, Chinmay Soman, Vinoth Chandar, Zhongjie Wu