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(Directories.DataDirectory 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 Directories.DataDirectory getLocationCapableOfSize(long estimatedSize)
- Finds location which is capable of holding given
estimatedSize
.
Picks a non-blacklisted directory with most free space and least current tasks.
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