Package org.apache.cassandra.io.sstable
Class Descriptor
- java.lang.Object
-
- org.apache.cassandra.io.sstable.Descriptor
-
public class Descriptor extends java.lang.Object
A SSTable is described by the keyspace and column family it contains data for, an id (generation - where higher generations contain more recent data) and an alphabetic version string. A descriptor can be marked as temporary, which influences generated filenames.
-
-
Field Summary
Fields Modifier and Type Field Description java.lang.String
cfname
File
directory
canonicalized path to the directory where SSTable residesstatic java.lang.String
EXTENSION
static char
FILENAME_SEPARATOR
SSTableId
id
java.lang.String
ksname
static java.lang.String
TMP_EXT
Version
version
version has the following format:[a-z]+
-
Constructor Summary
Constructors Constructor Description Descriptor(java.lang.String version, File directory, java.lang.String ksname, java.lang.String cfname, SSTableId id, SSTableFormat<?,?> format)
Descriptor(Version version, File directory, java.lang.String ksname, java.lang.String cfname, SSTableId id)
Descriptor(File directory, java.lang.String ksname, java.lang.String cfname, SSTableId id)
A descriptor that assumes CURRENT_VERSION.Descriptor(File directory, java.lang.String ksname, java.lang.String cfname, SSTableId id, SSTableFormat<?,?> format)
Constructor for sstable writers only.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description File
baseFile()
static Component
componentFromFile(File file)
java.util.Set<Component>
discoverComponents()
boolean
equals(java.lang.Object o)
File
fileFor(Component component)
static Descriptor
fromFile(File file)
Parse a sstable filename into a Descriptor.static Pair<Descriptor,Component>
fromFileWithComponent(File file)
Parse a sstable filename, extracting both theDescriptor
andComponent
part.static Pair<Descriptor,Component>
fromFileWithComponent(File file, boolean validateDirs)
static Pair<Descriptor,Component>
fromFileWithComponent(File file, java.lang.String keyspace, java.lang.String table)
Parse a sstable filename, extracting both theDescriptor
andComponent
part.java.util.Set<Component>
getComponents(java.util.Set<Component> mandatory, java.util.Set<Component> optional)
Returns the set of components consisting of the provided mandatory components and those optional components for which the corresponding file exists.SSTableFormat<?,?>
getFormat()
IMetadataSerializer
getMetadataSerializer()
java.util.List<File>
getTemporaryFiles()
Return any temporary files found in the directoryint
hashCode()
boolean
isCompatible()
static boolean
isValidFile(File file)
java.lang.String
relativeFilenameFor(Component component)
File
tmpFileFor(Component component)
File
tmpFileForStreaming(Component component)
java.lang.String
toString()
-
-
-
Field Detail
-
EXTENSION
public static final java.lang.String EXTENSION
- See Also:
- Constant Field Values
-
TMP_EXT
public static java.lang.String TMP_EXT
-
FILENAME_SEPARATOR
public static final char FILENAME_SEPARATOR
- See Also:
- Constant Field Values
-
directory
public final File directory
canonicalized path to the directory where SSTable resides
-
version
public final Version version
version has the following format:[a-z]+
-
ksname
public final java.lang.String ksname
-
cfname
public final java.lang.String cfname
-
id
public final SSTableId id
-
-
Constructor Detail
-
Descriptor
public Descriptor(File directory, java.lang.String ksname, java.lang.String cfname, SSTableId id)
A descriptor that assumes CURRENT_VERSION.
-
Descriptor
public Descriptor(File directory, java.lang.String ksname, java.lang.String cfname, SSTableId id, SSTableFormat<?,?> format)
Constructor for sstable writers only.
-
Descriptor
public Descriptor(java.lang.String version, File directory, java.lang.String ksname, java.lang.String cfname, SSTableId id, SSTableFormat<?,?> format)
-
-
Method Detail
-
tmpFileForStreaming
public File tmpFileForStreaming(Component component)
- Returns:
- a unique temporary file name for given component during entire-sstable-streaming.
-
baseFile
public File baseFile()
-
relativeFilenameFor
public java.lang.String relativeFilenameFor(Component component)
-
getFormat
public SSTableFormat<?,?> getFormat()
-
getTemporaryFiles
public java.util.List<File> getTemporaryFiles()
Return any temporary files found in the directory
-
getComponents
public java.util.Set<Component> getComponents(java.util.Set<Component> mandatory, java.util.Set<Component> optional)
Returns the set of components consisting of the provided mandatory components and those optional components for which the corresponding file exists.
-
isValidFile
public static boolean isValidFile(File file)
-
fromFile
public static Descriptor fromFile(File file)
Parse a sstable filename into a Descriptor.SSTables files are all located within subdirectories of the form
<keyspace>/<table>/
. Normal sstables are are directly within that subdirectory structure while 2ndary index, backups and snapshot are each inside an additional subdirectory. The file themselves have the form:<version>-<gen>-<format>-<component>
.Note that this method will only sucessfully parse sstable files of supported versions.
- Parameters:
file
- theFile
object for the filename to parse.- Returns:
- the descriptor for the parsed file.
- Throws:
java.lang.IllegalArgumentException
- if the providedfile
does point to a valid sstable filename. This could mean either that the filename doesn't look like a sstable file, or that it is for an old and unsupported versions.
-
fromFileWithComponent
public static Pair<Descriptor,Component> fromFileWithComponent(File file)
Parse a sstable filename, extracting both theDescriptor
andComponent
part. The keyspace/table name will be extracted from the directory path.- Parameters:
file
- theFile
object for the filename to parse.- Returns:
- a pair of the descriptor and component corresponding to the provided
file
. - Throws:
java.lang.IllegalArgumentException
- if the providedfile
does point to a valid sstable filename. This could mean either that the filename doesn't look like a sstable file, or that it is for an old and unsupported versions.
-
fromFileWithComponent
public static Pair<Descriptor,Component> fromFileWithComponent(File file, boolean validateDirs)
-
fromFileWithComponent
public static Pair<Descriptor,Component> fromFileWithComponent(File file, java.lang.String keyspace, java.lang.String table)
Parse a sstable filename, extracting both theDescriptor
andComponent
part.- Parameters:
file
- theFile
object for the filename to parse.keyspace
- The keyspace name of the file. Ifnull
, then the keyspace name will be extracted from the directory path.table
- The table name of the file. Ifnull
, then the table name will be extracted from the directory path.- Returns:
- a pair of the descriptor and component corresponding to the provided
file
. - Throws:
java.lang.IllegalArgumentException
- if the providedfile
does point to a valid sstable filename. This could mean either that the filename doesn't look like a sstable file, or that it is for an old and unsupported versions.
-
getMetadataSerializer
public IMetadataSerializer getMetadataSerializer()
-
isCompatible
public boolean isCompatible()
- Returns:
- true if the current Cassandra version can read the given sstable version
-
discoverComponents
public java.util.Set<Component> discoverComponents()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
-