potentially represents multiple locations.
Note that in the case of multiple locations, the manifest for the leveled
compaction is only in one of the location.
Snapshots (resp. backups) are always created along the sstables thare are
snapshoted (resp. backuped) but inside a subdirectory named 'snapshots'
(resp. backups) (and snapshots are furter inside a subdirectory of the name
of the snapshot).
This class abstracts all those details from the rest of the code.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
BACKUPS_SUBDIR
public static final java.lang.String BACKUPS_SUBDIR
- See Also:
- Constant Field Values
SNAPSHOT_SUBDIR
public static final java.lang.String SNAPSHOT_SUBDIR
- See Also:
- Constant Field Values
SECONDARY_INDEX_NAME_SEPARATOR
public static final java.lang.String SECONDARY_INDEX_NAME_SEPARATOR
- See Also:
- Constant Field Values
dataFileLocations
public static final Directories.DataDirectory[] dataFileLocations
create
public static Directories create(java.lang.String tablename,
java.lang.String cfname)
getLocationForDisk
public java.io.File getLocationForDisk(java.io.File dataDirectory)
- Returns SSTable location which is inside given data directory.
- Parameters:
dataDirectory
-
- Returns:
- SSTable location
getDirectoryForNewSSTables
public java.io.File getDirectoryForNewSSTables(long estimatedSize)
getLocationWithMaximumAvailableSpace
public java.io.File getLocationWithMaximumAvailableSpace(long estimatedSize)
getLocationCapableOfSize
public static Directories.DataDirectory getLocationCapableOfSize(long estimatedSize)
- Find location which is capable of holding given
estimatedSize
.
First it looks through for directory with no current task running and
the most free space available.
If no such directory is available, it just chose the one with the most
free space available.
If no directory can hold given estimatedSize
, then returns null.
- Parameters:
estimatedSize
- estimated size you need to find location to fit
- Returns:
- directory capable of given estimated size, or null if none found
getSnapshotDirectory
public static java.io.File getSnapshotDirectory(Descriptor desc,
java.lang.String snapshotName)
getBackupsDirectory
public static java.io.File getBackupsDirectory(Descriptor desc)
sstableLister
public Directories.SSTableLister sstableLister()
tryGetLeveledManifest
public java.io.File tryGetLeveledManifest()
getOrCreateLeveledManifest
public java.io.File getOrCreateLeveledManifest()
snapshotLeveledManifest
public void snapshotLeveledManifest(java.lang.String snapshotName)
snapshotExists
public boolean snapshotExists(java.lang.String snapshotName)
clearSnapshot
public void clearSnapshot(java.lang.String snapshotName)
snapshotCreationTime
public long snapshotCreationTime(java.lang.String snapshotName)
sstablesNeedsMigration
public static boolean sstablesNeedsMigration()
- To check if sstables needs migration, we look at the System directory.
If it does not contain a directory for the schema cfs, we'll attempt a sstable
migration.
Note that it is mostly harmless to try a migration uselessly, except
maybe for some wasted cpu cycles.
migrateSSTables
public static void migrateSSTables()
- Move sstables from the pre-#2749 layout to their new location/names.
This involves:
- moving each sstable to their CF specific directory
- rename the sstable to include the keyspace in the filename
Note that this also move leveled manifests, snapshots and backups.
Copyright © 2013 The Apache Software Foundation