public class SegmentCacheIndexImpl extends Object implements SegmentCacheIndex
Not thread safe.
| Constructor and Description |
|---|
SegmentCacheIndexImpl(Thread thread)
Creates a SegmentCacheIndexImpl.
|
| Modifier and Type | Method and Description |
|---|---|
void |
add(SegmentHeader header,
boolean loading,
SegmentBuilder.SegmentConverter converter)
Adds a header to the index.
|
List<List<SegmentHeader>> |
findRollupCandidates(String schemaName,
ByteString schemaChecksum,
String cubeName,
String measureName,
String rolapStarFactTableName,
BitKey constrainedColsBitKey,
Map<String,Comparable> coordinates,
List<String> compoundPredicates)
Returns a list of segments that can be rolled up to satisfy a given
cell request.
|
SegmentBuilder.SegmentConverter |
getConverter(String schemaName,
ByteString schemaChecksum,
String cubeName,
String rolapStarFactTableName,
String measureName,
List<String> compoundPredicates)
Returns a converter that can convert the given header to internal
format.
|
Future<SegmentBody> |
getFuture(SegmentHeader header)
Returns a future slot for a segment body, if a segment is currently
loading, otherwise null.
|
List<SegmentHeader> |
intersectRegion(String schemaName,
ByteString schemaChecksum,
String cubeName,
String measureName,
String rolapStarFactTableName,
SegmentColumn[] region)
Finds a list of headers that intersect a given region.
|
void |
loadFailed(SegmentHeader header,
Throwable throwable)
Notifies the segment index that a segment failed to load, and removes the
segment from the index.
|
void |
loadSucceeded(SegmentHeader header,
SegmentBody body)
Changes the state of a header from loading to loaded.
|
List<SegmentHeader> |
locate(String schemaName,
ByteString schemaChecksum,
String cubeName,
String measureName,
String rolapStarFactTableName,
BitKey constrainedColsBitKey,
Map<String,Comparable> coordinates,
List<String> compoundPredicates)
Identifies the segment headers that contain a given cell.
|
static List |
makeConverterKey(CellRequest request,
AggregationKey key) |
static List |
makeConverterKey(SegmentHeader header) |
static boolean |
matches(SegmentHeader header,
Map<String,Comparable> coords,
List<String> compoundPredicates) |
void |
printCacheState(PrintWriter pw)
Prints the state of the cache to the given writer.
|
void |
remove(SegmentHeader header)
Removes a header from the index.
|
void |
setConverter(String schemaName,
ByteString schemaChecksum,
String cubeName,
String rolapStarFactTableName,
String measureName,
List<String> compoundPredicates,
SegmentBuilder.SegmentConverter converter)
Sets a converter that can convert headers in for a given measure to
internal format.
|
public SegmentCacheIndexImpl(Thread thread)
thread - Thread that must be used to execute commands.public static List makeConverterKey(SegmentHeader header)
public static List makeConverterKey(CellRequest request, AggregationKey key)
public List<SegmentHeader> locate(String schemaName, ByteString schemaChecksum, String cubeName, String measureName, String rolapStarFactTableName, BitKey constrainedColsBitKey, Map<String,Comparable> coordinates, List<String> compoundPredicates)
SegmentCacheIndexlocate in interface SegmentCacheIndexschemaName - Schema nameschemaChecksum - Schema checksumcubeName - Cube namemeasureName - Measure namerolapStarFactTableName - Fact table tableconstrainedColsBitKey - Bit keycoordinates - CoordinatescompoundPredicates - Compound predicatespublic void add(SegmentHeader header, boolean loading, SegmentBuilder.SegmentConverter converter)
SegmentCacheIndexIf loading is true, there must follow a call to
SegmentCacheIndex.loadSucceeded(mondrian.spi.SegmentHeader, mondrian.spi.SegmentBody) or SegmentCacheIndex.loadFailed(mondrian.spi.SegmentHeader, java.lang.Throwable).
add in interface SegmentCacheIndexheader - Segment headerloading - Whether segment is pending a load from SQLconverter - Segment converterpublic void loadSucceeded(SegmentHeader header, SegmentBody body)
SegmentCacheIndexThe segment must have previously been added by calling SegmentCacheIndex.add(mondrian.spi.SegmentHeader, boolean, mondrian.rolap.agg.SegmentBuilder.SegmentConverter)
with a not-null value of the bodyFuture parameter;
neither loadSucceeded nor SegmentCacheIndex.loadFailed(mondrian.spi.SegmentHeader, java.lang.Throwable) must have been
called.
Informs anyone waiting on the future supplied with
SegmentCacheIndex.add(mondrian.spi.SegmentHeader, boolean, mondrian.rolap.agg.SegmentBuilder.SegmentConverter).
loadSucceeded in interface SegmentCacheIndexheader - Segment headerbody - Segment bodypublic void loadFailed(SegmentHeader header, Throwable throwable)
SegmentCacheIndexThe segment must have previously been added using SegmentCacheIndex.add(mondrian.spi.SegmentHeader, boolean, mondrian.rolap.agg.SegmentBuilder.SegmentConverter)
with a not-null value of the bodyFuture parameter;
neither SegmentCacheIndex.loadSucceeded(mondrian.spi.SegmentHeader, mondrian.spi.SegmentBody) nor loadFailed must have been
called.
Informs anyone waiting on the future supplied with
SegmentCacheIndex.add(mondrian.spi.SegmentHeader, boolean, mondrian.rolap.agg.SegmentBuilder.SegmentConverter).
loadFailed in interface SegmentCacheIndexheader - Headerthrowable - Error messagepublic void remove(SegmentHeader header)
SegmentCacheIndexremove in interface SegmentCacheIndexheader - Segment headerpublic static boolean matches(SegmentHeader header, Map<String,Comparable> coords, List<String> compoundPredicates)
public List<SegmentHeader> intersectRegion(String schemaName, ByteString schemaChecksum, String cubeName, String measureName, String rolapStarFactTableName, SegmentColumn[] region)
SegmentCacheIndexThis method is used to find out which headers need to be trimmed or removed during a flush.
intersectRegion in interface SegmentCacheIndexschemaName - Schema nameschemaChecksum - Schema checksumcubeName - Cube namemeasureName - Measure namerolapStarFactTableName - Fact table tableregion - Regionpublic void printCacheState(PrintWriter pw)
SegmentCacheIndexprintCacheState in interface SegmentCacheIndexpw - Print writerpublic Future<SegmentBody> getFuture(SegmentHeader header)
SegmentCacheIndexgetFuture in interface SegmentCacheIndexheader - Segment headerpublic SegmentBuilder.SegmentConverter getConverter(String schemaName, ByteString schemaChecksum, String cubeName, String rolapStarFactTableName, String measureName, List<String> compoundPredicates)
SegmentCacheIndexgetConverter in interface SegmentCacheIndexschemaName - Schema nameschemaChecksum - Schema checksumcubeName - Cube namerolapStarFactTableName - Fact tablemeasureName - Measure namecompoundPredicates - Compound predicatespublic void setConverter(String schemaName, ByteString schemaChecksum, String cubeName, String rolapStarFactTableName, String measureName, List<String> compoundPredicates, SegmentBuilder.SegmentConverter converter)
SegmentCacheIndexsetConverter in interface SegmentCacheIndexschemaName - Schema nameschemaChecksum - Schema checksumcubeName - Cube namerolapStarFactTableName - Fact tablemeasureName - Measure namecompoundPredicates - Compound predicatesconverter - Converter to storepublic List<List<SegmentHeader>> findRollupCandidates(String schemaName, ByteString schemaChecksum, String cubeName, String measureName, String rolapStarFactTableName, BitKey constrainedColsBitKey, Map<String,Comparable> coordinates, List<String> compoundPredicates)
SegmentCacheIndexfindRollupCandidates in interface SegmentCacheIndexschemaName - Schema nameschemaChecksum - Schema checksumcubeName - Cube namemeasureName - Measure namerolapStarFactTableName - Fact table tableconstrainedColsBitKey - Bit keycoordinates - CoordinatescompoundPredicates - Compound predicates