Package org.apache.cassandra.db
Class ColumnFamilyStore
- java.lang.Object
-
- org.apache.cassandra.db.ColumnFamilyStore
-
- All Implemented Interfaces:
ColumnFamilyStoreMBean
public class ColumnFamilyStore extends java.lang.Object implements ColumnFamilyStoreMBean
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ColumnFamilyStore.RefViewFragment
static class
ColumnFamilyStore.ViewFragment
-
Field Summary
Fields Modifier and Type Field Description long
additionalWriteLatencyNanos
SecondaryIndexManager
indexManager
Keyspace
keyspace
TableMetadataRef
metadata
TableMetrics
metric
java.lang.String
name
OpOrder
readOrdering
long
sampleReadLatencyNanos
static java.lang.String
SNAPSHOT_DROP_PREFIX
static java.lang.String
SNAPSHOT_TRUNCATE_PREFIX
TableViews
viewManager
-
Constructor Summary
Constructors Constructor Description ColumnFamilyStore(Keyspace keyspace, java.lang.String columnFamilyName, int generation, TableMetadataRef metadata, Directories directories, boolean loadSSTables, boolean registerBookeeping, boolean offline)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addSSTable(SSTableReader sstable)
void
addSSTables(java.util.Collection<SSTableReader> sstables)
static java.lang.Iterable<ColumnFamilyStore>
all()
void
apply(PartitionUpdate update, UpdateTransaction indexer, OpOrder.Group opGroup, CommitLogPosition commitLogPosition)
Insert/Update the column family for this key.void
beginLocalSampling(java.lang.String sampler, int capacity, int durationMillis)
begin sampling for a specific sampler with a given capacity.void
cleanupCache()
protected static void
clearEphemeralSnapshots(Directories directories)
void
clearSnapshot(java.lang.String snapshotName)
Clear all the snapshots for a given column family.void
clearUnsafe()
For testing.void
compactionDiskSpaceCheck(boolean enable)
java.lang.Iterable<ColumnFamilyStore>
concatWithIndexes()
boolean
containsCachedParition(DecoratedKey key)
static ColumnFamilyStore
createColumnFamilyStore(Keyspace keyspace, java.lang.String columnFamily, TableMetadataRef metadata, boolean loadSSTables)
static ColumnFamilyStore
createColumnFamilyStore(Keyspace keyspace, java.lang.String columnFamily, TableMetadataRef metadata, Directories directories, boolean loadSSTables, boolean registerBookkeeping, boolean offline)
This is only directly used by offline toolsstatic ColumnFamilyStore
createColumnFamilyStore(Keyspace keyspace, TableMetadataRef metadata, boolean loadSSTables)
AbstractCompactionStrategy
createCompactionStrategyInstance(CompactionParams compactionParams)
SSTableMultiWriter
createSSTableMultiWriter(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, int sstableLevel, SerializationHeader header, LifecycleNewTracker lifecycleNewTracker)
SSTableMultiWriter
createSSTableMultiWriter(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, MetadataCollector metadataCollector, SerializationHeader header, LifecycleNewTracker lifecycleNewTracker)
DecoratedKey
decorateKey(java.nio.ByteBuffer key)
void
disableAutoCompaction()
void
discardSSTables(long truncatedAt)
Discard all SSTables that were created before given timestamp.java.util.concurrent.Future<CommitLogPosition>
dumpMemtable()
Drops current memtable without flushing to disk.void
enableAutoCompaction()
void
enableAutoCompaction(boolean waitForFutures)
used for tests - to be able to check things after a minor compactionlong
estimatedKeysForRange(Range<Token> range)
long
estimateKeys()
java.util.List<javax.management.openmbean.CompositeData>
finishLocalSampling(java.lang.String sampler, int count)
static java.util.concurrent.CompletableFuture<java.lang.Boolean>
flushLargestMemtable()
Finds the largest memtable, as a percentage of *either* on- or off-heap memory limits, and immediately queues it for flushing.CommitLogPosition
forceBlockingFlush()
CompactionManager.AllSSTableOpStatus
forceCleanup(int jobs)
void
forceCompactionForTokenRange(java.util.Collection<Range<Token>> tokenRanges)
Forces a major compaction of specified token ranges in this column family.com.google.common.util.concurrent.ListenableFuture<CommitLogPosition>
forceFlush()
Flush if there is unflushed data in the memtablescom.google.common.util.concurrent.ListenableFuture<?>
forceFlush(CommitLogPosition flushIfDirtyBefore)
Flush if there is unflushed data that was written to the CommitLog before @param flushIfDirtyBefore (inclusive).void
forceMajorCompaction()
void
forceMajorCompaction(boolean splitOutput)
force a major compaction of this column familyCompactionManager.AllSSTableOpStatus
garbageCollect(CompactionParams.TombstoneOption tombstoneOption, int jobs)
int
gcBefore(int nowInSec)
Refs<SSTableReader>
getAndReferenceOverlappingLiveSSTables(java.lang.Iterable<SSTableReader> sstables)
like getOverlappingSSTables, but acquires references before returningstatic java.lang.Runnable
getBackgroundCompactionTaskSubmitter()
java.util.List<java.lang.String>
getBuiltIndexes()
Returns a list of the names of the built column indexes for current storeClockAndCount
getCachedCounter(java.nio.ByteBuffer partitionKey, Clustering<?> clustering, ColumnMetadata column, CellPath path)
static java.lang.String
getColumnFamilieMBeanName(java.lang.String ks, java.lang.String name, boolean isIndex)
java.lang.String
getColumnFamilyName()
Deprecated.java.util.Map<java.lang.String,java.lang.String>
getCompactionParameters()
java.lang.String
getCompactionParametersJson()
CompactionStrategyManager
getCompactionStrategyManager()
ClusteringComparator
getComparator()
java.util.Map<java.lang.String,java.lang.String>
getCompressionParameters()
Get the compression parametersjava.lang.String
getCompressionParametersJson()
java.lang.Double
getCrcCheckChance()
java.util.List<java.lang.String>
getDataPaths()
Directories
getDirectories()
DiskBoundaries
getDiskBoundaries()
double
getDroppableTombstoneRatio()
Get the ratio of droppable tombstones to real columns (and non-droppable tombstones)long
getExpectedCompactedFileSize(java.lang.Iterable<SSTableReader> sstables, OperationType operation)
Calculate expected file size of SSTable after compaction.static ColumnFamilyStore
getIfExists(java.lang.String ksName, java.lang.String cfName)
Returns a ColumnFamilyStore by ksname and cfname if it exists, null otherwise Differently from others, this method does not throw exception if the keyspace or table does not exist.static ColumnFamilyStore
getIfExists(TableId id)
Returns a ColumnFamilyStore by id if it exists, null otherwise Differently from others, this method does not throw exception if the table does not exist.int
getLevelFanoutSize()
java.util.Set<SSTableReader>
getLiveSSTables()
int
getMaximumCompactionThreshold()
Gets the maximum number of sstables in queue before compaction kicks offSSTableReader
getMaxSizeFile(java.lang.Iterable<SSTableReader> sstables)
int
getMeanEstimatedCellPerPartitionCount()
double
getMeanPartitionSize()
int
getMeanRowCount()
int
getMinimumCompactionThreshold()
Gets the minimum number of sstables in queue before compaction kicks offboolean
getNeverPurgeTombstones()
java.util.Collection<SSTableReader>
getOverlappingLiveSSTables(java.lang.Iterable<SSTableReader> sstables)
IPartitioner
getPartitioner()
java.util.Map<java.util.UUID,PendingStat>
getPendingRepairStats()
CachedPartition
getRawCachedPartition(DecoratedKey key)
TableRepairManager
getRepairManager()
long
getSnapshotCreationTime(java.lang.String snapshotName)
java.util.Map<java.lang.String,Directories.SnapshotSizeDetails>
getSnapshotDetails()
Refs<SSTableReader>
getSnapshotSSTableReaders(java.lang.String tag)
int[]
getSSTableCountPerLevel()
java.lang.Iterable<SSTableReader>
getSSTables(SSTableSet sstableSet)
java.util.List<java.lang.String>
getSSTablesForKey(java.lang.String key)
Returns a list of filenames that contain the given key on this nodejava.util.List<java.lang.String>
getSSTablesForKey(java.lang.String key, boolean hexFormat)
Returns a list of filenames that contain the given key on this nodeTableStreamManager
getStreamManager()
static java.lang.String
getTableMBeanName(java.lang.String ks, java.lang.String name, boolean isIndex)
java.lang.String
getTableName()
Tracker
getTracker()
Package protected for access from the CompactionManager.java.lang.Iterable<SSTableReader>
getUncompactingSSTables()
int
getUnleveledSSTables()
TableWriteHandler
getWriteHandler()
boolean
hasMisplacedSSTables()
Check SSTables whether or not they are misplaced.java.util.List<java.lang.String>
importNewSSTables(java.util.Set<java.lang.String> srcPaths, boolean resetLevel, boolean clearRepaired, boolean verifySSTables, boolean verifyTokens, boolean invalidateCaches, boolean extendedVerify)
Load new sstables from the given directoryjava.util.List<java.lang.String>
importNewSSTables(java.util.Set<java.lang.String> srcPaths, boolean resetLevel, boolean clearRepaired, boolean verifySSTables, boolean verifyTokens, boolean invalidateCaches, boolean extendedVerify, boolean copyData)
#Load new sstables from the given directoryvoid
invalidate()
call when dropping or renaming a CF.void
invalidate(boolean expectMBean)
void
invalidateCachedPartition(RowCacheKey key)
void
invalidateCachedPartition(DecoratedKey key)
int
invalidateCounterCache(java.util.Collection<Bounds<Token>> boundsToInvalidate)
void
invalidateDiskBoundaries()
int
invalidateRowCache(java.util.Collection<Bounds<Token>> boundsToInvalidate)
boolean
isAutoCompactionDisabled()
boolean
isCompactionDiskSpaceCheckEnabled()
boolean
isCounterCacheEnabled()
boolean
isEmpty()
boolean
isFilterFullyCoveredBy(ClusteringIndexFilter filter, DataLimits limits, CachedPartition cached, int nowInSec, boolean enforceStrictLiveness)
boolean
isIndex()
true if this CFS contains secondary index databoolean
isKeyCacheEnabled()
boolean
isRowCacheEnabled()
boolean
isValid()
java.lang.Iterable<DecoratedKey>
keySamples(Range<Token> range)
void
loadNewSSTables()
Deprecated.static void
loadNewSSTables(java.lang.String ksName, java.lang.String cfName)
See #StorageService.importNewSSTables
for more infoLifecycleTransaction
markAllCompacting(OperationType operationType)
void
markObsolete(java.util.Collection<SSTableReader> sstables, OperationType compactionType)
TableMetadata
metadata()
static TableMetrics
metricsFor(TableId tableId)
Descriptor
newSSTableDescriptor(java.io.File directory)
Descriptor
newSSTableDescriptor(java.io.File directory, SSTableFormat.Type format)
Descriptor
newSSTableDescriptor(java.io.File directory, Version version, SSTableFormat.Type format)
void
putCachedCounter(java.nio.ByteBuffer partitionKey, Clustering<?> clustering, ColumnMetadata column, CellPath path, ClockAndCount clockAndCount)
boolean
rebuildOnFailedScrub(java.lang.Throwable failure)
CASSANDRA-5174 : For an index cfs we may be able to discard everything and just rebuild the index when a scrub fails.void
rebuildSecondaryIndex(java.lang.String idxName)
static void
rebuildSecondaryIndex(java.lang.String ksName, java.lang.String cfName, java.lang.String... idxNames)
CleanupSummary
releaseRepairData(java.util.Collection<java.util.UUID> sessions, boolean force)
promotes (or demotes) data attached to an incremental repair session that has either completed successfully, or failedvoid
reload()
CompactionManager.AllSSTableOpStatus
relocateSSTables(int jobs)
<V> V
runWithCompactionsDisabled(java.util.concurrent.Callable<V> callable, boolean interruptValidation, boolean interruptViews)
<V> V
runWithCompactionsDisabled(java.util.concurrent.Callable<V> callable, com.google.common.base.Predicate<SSTableReader> sstablesPredicate, boolean interruptValidation, boolean interruptViews, boolean interruptIndexes)
Runs callable with compactions paused and compactions including sstables matching sstablePredicate stoppedCompactionManager.AllSSTableOpStatus
scrub(boolean disableSnapshot, boolean skipCorrupted, boolean reinsertOverflowedTTL, boolean alwaysFail, boolean checkData, int jobs)
CompactionManager.AllSSTableOpStatus
scrub(boolean disableSnapshot, boolean skipCorrupted, boolean checkData, boolean reinsertOverflowedTTL, int jobs)
static void
scrubDataDirectories(TableMetadata metadata)
Removes unnecessary files from the cf directory at startup: these include temp files, orphans, zero-length files and compacted sstables.ColumnFamilyStore.ViewFragment
select(com.google.common.base.Function<View,java.lang.Iterable<SSTableReader>> filter)
ColumnFamilyStore.RefViewFragment
selectAndReference(com.google.common.base.Function<View,java.lang.Iterable<SSTableReader>> filter)
void
setCompactionParameters(java.util.Map<java.lang.String,java.lang.String> options)
Sets the compaction parameters locally for this node Note that this will be set until an ALTER with compaction = {..} is executed or the node is restartedvoid
setCompactionParametersJson(java.lang.String options)
Sets the compaction parameters locally for this node Note that this will be set until an ALTER with compaction = {..} is executed or the node is restartedvoid
setCompactionThresholds(int minThreshold, int maxThreshold)
Sets the maximum and maximum number of SSTables in queue before compaction kicks offvoid
setCompressionParameters(java.util.Map<java.lang.String,java.lang.String> opts)
Set the compression parameters locally for this nodevoid
setCompressionParametersJson(java.lang.String options)
void
setCrcCheckChance(double crcCheckChance)
Set new crc check chancevoid
setMaximumCompactionThreshold(int maxCompactionThreshold)
Sets the maximum number of sstables in queue before compaction kicks offvoid
setMinimumCompactionThreshold(int minCompactionThreshold)
Sets the minimum number of sstables in queue before compaction kicks offvoid
setNeverPurgeTombstones(boolean value)
static void
shutdownExecutorsAndWait(long timeout, java.util.concurrent.TimeUnit unit)
static void
shutdownPostFlushExecutor()
java.util.Set<SSTableReader>
snapshot(java.lang.String snapshotName)
Take a snap shot of this columnfamily store.java.util.Set<SSTableReader>
snapshot(java.lang.String snapshotName, boolean skipFlush, com.google.common.util.concurrent.RateLimiter rateLimiter)
Take a snap shot of this columnfamily store.java.util.Set<SSTableReader>
snapshot(java.lang.String snapshotName, com.google.common.base.Predicate<SSTableReader> predicate, boolean ephemeral, boolean skipFlush)
java.util.Set<SSTableReader>
snapshot(java.lang.String snapshotName, com.google.common.base.Predicate<SSTableReader> predicate, boolean ephemeral, boolean skipFlush, com.google.common.util.concurrent.RateLimiter rateLimiter)
boolean
snapshotExists(java.lang.String snapshotName)
void
snapshotWithoutFlush(java.lang.String snapshotName)
java.util.Set<SSTableReader>
snapshotWithoutFlush(java.lang.String snapshotName, com.google.common.base.Predicate<SSTableReader> predicate, boolean ephemeral, com.google.common.util.concurrent.RateLimiter rateLimiter)
CompactionManager.AllSSTableOpStatus
sstablesRewrite(boolean excludeCurrentVersion, int jobs)
boolean
supportsEarlyOpen()
com.google.common.util.concurrent.ListenableFuture<CommitLogPosition>
switchMemtable()
com.google.common.util.concurrent.ListenableFuture<CommitLogPosition>
switchMemtableIfCurrent(Memtable memtable)
Switches the memtable iff the live memtable is the one providedjava.lang.String
toString()
long
trueSnapshotsSize()
void
truncateBlocking()
void
truncateBlockingWithoutSnapshot()
void
updateSpeculationThreshold()
CompactionManager.AllSSTableOpStatus
verify(Verifier.Options options)
-
-
-
Field Detail
-
SNAPSHOT_TRUNCATE_PREFIX
public static final java.lang.String SNAPSHOT_TRUNCATE_PREFIX
- See Also:
- Constant Field Values
-
SNAPSHOT_DROP_PREFIX
public static final java.lang.String SNAPSHOT_DROP_PREFIX
- See Also:
- Constant Field Values
-
keyspace
public final Keyspace keyspace
-
name
public final java.lang.String name
-
metadata
public final TableMetadataRef metadata
-
readOrdering
public final OpOrder readOrdering
-
indexManager
public final SecondaryIndexManager indexManager
-
viewManager
public final TableViews viewManager
-
metric
public final TableMetrics metric
-
sampleReadLatencyNanos
public volatile long sampleReadLatencyNanos
-
additionalWriteLatencyNanos
public volatile long additionalWriteLatencyNanos
-
-
Constructor Detail
-
ColumnFamilyStore
public ColumnFamilyStore(Keyspace keyspace, java.lang.String columnFamilyName, int generation, TableMetadataRef metadata, Directories directories, boolean loadSSTables, boolean registerBookeeping, boolean offline)
-
-
Method Detail
-
shutdownPostFlushExecutor
public static void shutdownPostFlushExecutor() throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
shutdownExecutorsAndWait
public static void shutdownExecutorsAndWait(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException
- Throws:
java.lang.InterruptedException
java.util.concurrent.TimeoutException
-
reload
public void reload()
-
getBackgroundCompactionTaskSubmitter
public static java.lang.Runnable getBackgroundCompactionTaskSubmitter()
-
getCompactionParameters
public java.util.Map<java.lang.String,java.lang.String> getCompactionParameters()
- Specified by:
getCompactionParameters
in interfaceColumnFamilyStoreMBean
-
getCompactionParametersJson
public java.lang.String getCompactionParametersJson()
- Specified by:
getCompactionParametersJson
in interfaceColumnFamilyStoreMBean
-
setCompactionParameters
public void setCompactionParameters(java.util.Map<java.lang.String,java.lang.String> options)
Description copied from interface:ColumnFamilyStoreMBean
Sets the compaction parameters locally for this node Note that this will be set until an ALTER with compaction = {..} is executed or the node is restarted- Specified by:
setCompactionParameters
in interfaceColumnFamilyStoreMBean
- Parameters:
options
- compaction options map
-
setCompactionParametersJson
public void setCompactionParametersJson(java.lang.String options)
Description copied from interface:ColumnFamilyStoreMBean
Sets the compaction parameters locally for this node Note that this will be set until an ALTER with compaction = {..} is executed or the node is restarted- Specified by:
setCompactionParametersJson
in interfaceColumnFamilyStoreMBean
- Parameters:
options
- compaction options with the same syntax as when doing ALTER ... WITH compaction = {..}
-
getCompressionParameters
public java.util.Map<java.lang.String,java.lang.String> getCompressionParameters()
Description copied from interface:ColumnFamilyStoreMBean
Get the compression parameters- Specified by:
getCompressionParameters
in interfaceColumnFamilyStoreMBean
-
getCompressionParametersJson
public java.lang.String getCompressionParametersJson()
- Specified by:
getCompressionParametersJson
in interfaceColumnFamilyStoreMBean
-
setCompressionParameters
public void setCompressionParameters(java.util.Map<java.lang.String,java.lang.String> opts)
Description copied from interface:ColumnFamilyStoreMBean
Set the compression parameters locally for this node- Specified by:
setCompressionParameters
in interfaceColumnFamilyStoreMBean
- Parameters:
opts
- map of string names to values
-
setCompressionParametersJson
public void setCompressionParametersJson(java.lang.String options)
- Specified by:
setCompressionParametersJson
in interfaceColumnFamilyStoreMBean
-
getTableMBeanName
public static java.lang.String getTableMBeanName(java.lang.String ks, java.lang.String name, boolean isIndex)
-
getColumnFamilieMBeanName
public static java.lang.String getColumnFamilieMBeanName(java.lang.String ks, java.lang.String name, boolean isIndex)
-
updateSpeculationThreshold
public void updateSpeculationThreshold()
-
getWriteHandler
public TableWriteHandler getWriteHandler()
-
getStreamManager
public TableStreamManager getStreamManager()
-
getRepairManager
public TableRepairManager getRepairManager()
-
metadata
public TableMetadata metadata()
-
getDirectories
public Directories getDirectories()
-
getDataPaths
public java.util.List<java.lang.String> getDataPaths() throws java.io.IOException
- Specified by:
getDataPaths
in interfaceColumnFamilyStoreMBean
- Throws:
java.io.IOException
-
createSSTableMultiWriter
public SSTableMultiWriter createSSTableMultiWriter(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, int sstableLevel, SerializationHeader header, LifecycleNewTracker lifecycleNewTracker)
-
createSSTableMultiWriter
public SSTableMultiWriter createSSTableMultiWriter(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, MetadataCollector metadataCollector, SerializationHeader header, LifecycleNewTracker lifecycleNewTracker)
-
supportsEarlyOpen
public boolean supportsEarlyOpen()
-
invalidate
public void invalidate()
call when dropping or renaming a CF. Performs mbean housekeeping and invalidates CFS to other operations
-
invalidate
public void invalidate(boolean expectMBean)
-
createColumnFamilyStore
public static ColumnFamilyStore createColumnFamilyStore(Keyspace keyspace, TableMetadataRef metadata, boolean loadSSTables)
-
createColumnFamilyStore
public static ColumnFamilyStore createColumnFamilyStore(Keyspace keyspace, java.lang.String columnFamily, TableMetadataRef metadata, boolean loadSSTables)
-
createColumnFamilyStore
public static ColumnFamilyStore createColumnFamilyStore(Keyspace keyspace, java.lang.String columnFamily, TableMetadataRef metadata, Directories directories, boolean loadSSTables, boolean registerBookkeeping, boolean offline)
This is only directly used by offline tools
-
scrubDataDirectories
public static void scrubDataDirectories(TableMetadata metadata) throws StartupException
Removes unnecessary files from the cf directory at startup: these include temp files, orphans, zero-length files and compacted sstables. Files that cannot be recognized will be ignored.- Throws:
StartupException
-
loadNewSSTables
public static void loadNewSSTables(java.lang.String ksName, java.lang.String cfName)
See #StorageService.importNewSSTables
for more info- Parameters:
ksName
- The keyspace namecfName
- The columnFamily name
-
loadNewSSTables
@Deprecated public void loadNewSSTables()
Deprecated.- Specified by:
loadNewSSTables
in interfaceColumnFamilyStoreMBean
-
importNewSSTables
public java.util.List<java.lang.String> importNewSSTables(java.util.Set<java.lang.String> srcPaths, boolean resetLevel, boolean clearRepaired, boolean verifySSTables, boolean verifyTokens, boolean invalidateCaches, boolean extendedVerify, boolean copyData)
#Load new sstables from the given directory- Specified by:
importNewSSTables
in interfaceColumnFamilyStoreMBean
- Parameters:
srcPaths
- the path to the new sstables - if it is an empty set, the data directories will be scannedresetLevel
- if the level should be reset to 0 on the new sstablesclearRepaired
- if repaired info should be wiped from the new sstablesverifySSTables
- if the new sstables should be verified that they are not corruptverifyTokens
- if the tokens in the new sstables should be verified that they are owned by the current nodeinvalidateCaches
- if row cache should be invalidated for the keys in the new sstablesextendedVerify
- if we should run an extended verify checking all values in the new sstablescopyData
- if we should copy data from source paths instead of moving them- Returns:
- list of failed import directories
-
importNewSSTables
public java.util.List<java.lang.String> importNewSSTables(java.util.Set<java.lang.String> srcPaths, boolean resetLevel, boolean clearRepaired, boolean verifySSTables, boolean verifyTokens, boolean invalidateCaches, boolean extendedVerify)
Description copied from interface:ColumnFamilyStoreMBean
Load new sstables from the given directory- Specified by:
importNewSSTables
in interfaceColumnFamilyStoreMBean
- Parameters:
srcPaths
- the path to the new sstables - if it is an empty set, the data directories will be scannedresetLevel
- if the level should be reset to 0 on the new sstablesclearRepaired
- if repaired info should be wiped from the new sstablesverifySSTables
- if the new sstables should be verified that they are not corruptverifyTokens
- if the tokens in the new sstables should be verified that they are owned by the current nodeinvalidateCaches
- if row cache should be invalidated for the keys in the new sstablesextendedVerify
- if we should run an extended verify checking all values in the new sstables- Returns:
- list of failed import directories
-
rebuildSecondaryIndex
public void rebuildSecondaryIndex(java.lang.String idxName)
-
rebuildSecondaryIndex
public static void rebuildSecondaryIndex(java.lang.String ksName, java.lang.String cfName, java.lang.String... idxNames)
-
createCompactionStrategyInstance
public AbstractCompactionStrategy createCompactionStrategyInstance(CompactionParams compactionParams)
-
getColumnFamilyName
@Deprecated public java.lang.String getColumnFamilyName()
Deprecated.- Specified by:
getColumnFamilyName
in interfaceColumnFamilyStoreMBean
- Returns:
- the name of the column family
-
getTableName
public java.lang.String getTableName()
- Specified by:
getTableName
in interfaceColumnFamilyStoreMBean
-
newSSTableDescriptor
public Descriptor newSSTableDescriptor(java.io.File directory)
-
newSSTableDescriptor
public Descriptor newSSTableDescriptor(java.io.File directory, SSTableFormat.Type format)
-
newSSTableDescriptor
public Descriptor newSSTableDescriptor(java.io.File directory, Version version, SSTableFormat.Type format)
-
switchMemtableIfCurrent
public com.google.common.util.concurrent.ListenableFuture<CommitLogPosition> switchMemtableIfCurrent(Memtable memtable)
Switches the memtable iff the live memtable is the one provided- Parameters:
memtable
-
-
switchMemtable
public com.google.common.util.concurrent.ListenableFuture<CommitLogPosition> switchMemtable()
-
forceFlush
public com.google.common.util.concurrent.ListenableFuture<CommitLogPosition> forceFlush()
Flush if there is unflushed data in the memtables- Returns:
- a Future yielding the commit log position that can be guaranteed to have been successfully written to sstables for this table once the future completes
-
forceFlush
public com.google.common.util.concurrent.ListenableFuture<?> forceFlush(CommitLogPosition flushIfDirtyBefore)
Flush if there is unflushed data that was written to the CommitLog before @param flushIfDirtyBefore (inclusive).- Returns:
- a Future yielding the commit log position that can be guaranteed to have been successfully written to sstables for this table once the future completes
-
forceBlockingFlush
public CommitLogPosition forceBlockingFlush()
-
flushLargestMemtable
public static java.util.concurrent.CompletableFuture<java.lang.Boolean> flushLargestMemtable()
Finds the largest memtable, as a percentage of *either* on- or off-heap memory limits, and immediately queues it for flushing. If the memtable selected is flushed before this completes, no work is done.
-
apply
public void apply(PartitionUpdate update, UpdateTransaction indexer, OpOrder.Group opGroup, CommitLogPosition commitLogPosition)
Insert/Update the column family for this key. Caller is responsible for acquiring Keyspace.switchLock param @ lock - lock that needs to be used. param @ key - key for update/insert param @ columnFamily - columnFamily changes
-
getOverlappingLiveSSTables
public java.util.Collection<SSTableReader> getOverlappingLiveSSTables(java.lang.Iterable<SSTableReader> sstables)
- Parameters:
sstables
-- Returns:
- sstables whose key range overlaps with that of the given sstables, not including itself. (The given sstables may or may not overlap with each other.)
-
getAndReferenceOverlappingLiveSSTables
public Refs<SSTableReader> getAndReferenceOverlappingLiveSSTables(java.lang.Iterable<SSTableReader> sstables)
like getOverlappingSSTables, but acquires references before returning
-
addSSTable
public void addSSTable(SSTableReader sstable)
-
addSSTables
public void addSSTables(java.util.Collection<SSTableReader> sstables)
-
getExpectedCompactedFileSize
public long getExpectedCompactedFileSize(java.lang.Iterable<SSTableReader> sstables, OperationType operation)
Calculate expected file size of SSTable after compaction. If operation type isCLEANUP
and we're not dealing with an index sstable, then we calculate expected file size with checking token range to be eliminated. Otherwise, we just add up all the files' size, which is the worst case file size for compaction of all the list of files given.- Parameters:
sstables
- SSTables to calculate expected compacted file sizeoperation
- Operation type- Returns:
- Expected file size of SSTable after compaction
-
getMaxSizeFile
public SSTableReader getMaxSizeFile(java.lang.Iterable<SSTableReader> sstables)
-
forceCleanup
public CompactionManager.AllSSTableOpStatus forceCleanup(int jobs) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException
- Throws:
java.util.concurrent.ExecutionException
java.lang.InterruptedException
-
scrub
public CompactionManager.AllSSTableOpStatus scrub(boolean disableSnapshot, boolean skipCorrupted, boolean checkData, boolean reinsertOverflowedTTL, int jobs) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException
- Throws:
java.util.concurrent.ExecutionException
java.lang.InterruptedException
-
scrub
public CompactionManager.AllSSTableOpStatus scrub(boolean disableSnapshot, boolean skipCorrupted, boolean reinsertOverflowedTTL, boolean alwaysFail, boolean checkData, int jobs) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException
- Throws:
java.util.concurrent.ExecutionException
java.lang.InterruptedException
-
rebuildOnFailedScrub
public boolean rebuildOnFailedScrub(java.lang.Throwable failure)
CASSANDRA-5174 : For an index cfs we may be able to discard everything and just rebuild the index when a scrub fails.- Returns:
- true if we are an index cfs and we successfully rebuilt the index
-
verify
public CompactionManager.AllSSTableOpStatus verify(Verifier.Options options) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException
- Throws:
java.util.concurrent.ExecutionException
java.lang.InterruptedException
-
sstablesRewrite
public CompactionManager.AllSSTableOpStatus sstablesRewrite(boolean excludeCurrentVersion, int jobs) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException
- Throws:
java.util.concurrent.ExecutionException
java.lang.InterruptedException
-
relocateSSTables
public CompactionManager.AllSSTableOpStatus relocateSSTables(int jobs) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException
- Throws:
java.util.concurrent.ExecutionException
java.lang.InterruptedException
-
garbageCollect
public CompactionManager.AllSSTableOpStatus garbageCollect(CompactionParams.TombstoneOption tombstoneOption, int jobs) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException
- Throws:
java.util.concurrent.ExecutionException
java.lang.InterruptedException
-
markObsolete
public void markObsolete(java.util.Collection<SSTableReader> sstables, OperationType compactionType)
-
isValid
public boolean isValid()
-
getTracker
public Tracker getTracker()
Package protected for access from the CompactionManager.
-
getLiveSSTables
public java.util.Set<SSTableReader> getLiveSSTables()
-
getSSTables
public java.lang.Iterable<SSTableReader> getSSTables(SSTableSet sstableSet)
-
getUncompactingSSTables
public java.lang.Iterable<SSTableReader> getUncompactingSSTables()
-
getPendingRepairStats
public java.util.Map<java.util.UUID,PendingStat> getPendingRepairStats()
-
releaseRepairData
public CleanupSummary releaseRepairData(java.util.Collection<java.util.UUID> sessions, boolean force)
promotes (or demotes) data attached to an incremental repair session that has either completed successfully, or failed- Returns:
- session ids whose data could not be released
-
isFilterFullyCoveredBy
public boolean isFilterFullyCoveredBy(ClusteringIndexFilter filter, DataLimits limits, CachedPartition cached, int nowInSec, boolean enforceStrictLiveness)
-
gcBefore
public int gcBefore(int nowInSec)
-
selectAndReference
public ColumnFamilyStore.RefViewFragment selectAndReference(com.google.common.base.Function<View,java.lang.Iterable<SSTableReader>> filter)
-
select
public ColumnFamilyStore.ViewFragment select(com.google.common.base.Function<View,java.lang.Iterable<SSTableReader>> filter)
-
getSSTablesForKey
public java.util.List<java.lang.String> getSSTablesForKey(java.lang.String key)
Description copied from interface:ColumnFamilyStoreMBean
Returns a list of filenames that contain the given key on this node- Specified by:
getSSTablesForKey
in interfaceColumnFamilyStoreMBean
- Returns:
- list of filenames containing the key
-
getSSTablesForKey
public java.util.List<java.lang.String> getSSTablesForKey(java.lang.String key, boolean hexFormat)
Description copied from interface:ColumnFamilyStoreMBean
Returns a list of filenames that contain the given key on this node- Specified by:
getSSTablesForKey
in interfaceColumnFamilyStoreMBean
hexFormat
- if key is in hex string format- Returns:
- list of filenames containing the key
-
beginLocalSampling
public void beginLocalSampling(java.lang.String sampler, int capacity, int durationMillis)
Description copied from interface:ColumnFamilyStoreMBean
begin sampling for a specific sampler with a given capacity. The cardinality may be larger than the capacity, but depending on the use case it may affect its accuracy- Specified by:
beginLocalSampling
in interfaceColumnFamilyStoreMBean
-
finishLocalSampling
public java.util.List<javax.management.openmbean.CompositeData> finishLocalSampling(java.lang.String sampler, int count) throws javax.management.openmbean.OpenDataException
- Specified by:
finishLocalSampling
in interfaceColumnFamilyStoreMBean
- Returns:
- top count items for the sampler since beginLocalSampling was called
- Throws:
javax.management.openmbean.OpenDataException
-
isCompactionDiskSpaceCheckEnabled
public boolean isCompactionDiskSpaceCheckEnabled()
- Specified by:
isCompactionDiskSpaceCheckEnabled
in interfaceColumnFamilyStoreMBean
-
compactionDiskSpaceCheck
public void compactionDiskSpaceCheck(boolean enable)
- Specified by:
compactionDiskSpaceCheck
in interfaceColumnFamilyStoreMBean
-
cleanupCache
public void cleanupCache()
-
getComparator
public ClusteringComparator getComparator()
-
snapshotWithoutFlush
public void snapshotWithoutFlush(java.lang.String snapshotName)
-
snapshotWithoutFlush
public java.util.Set<SSTableReader> snapshotWithoutFlush(java.lang.String snapshotName, com.google.common.base.Predicate<SSTableReader> predicate, boolean ephemeral, com.google.common.util.concurrent.RateLimiter rateLimiter)
- Parameters:
ephemeral
- If this flag is set to true, the snapshot will be cleaned during next startup
-
clearEphemeralSnapshots
protected static void clearEphemeralSnapshots(Directories directories)
-
getSnapshotSSTableReaders
public Refs<SSTableReader> getSnapshotSSTableReaders(java.lang.String tag) throws java.io.IOException
- Throws:
java.io.IOException
-
snapshot
public java.util.Set<SSTableReader> snapshot(java.lang.String snapshotName)
Take a snap shot of this columnfamily store.- Parameters:
snapshotName
- the name of the associated with the snapshot
-
snapshot
public java.util.Set<SSTableReader> snapshot(java.lang.String snapshotName, boolean skipFlush, com.google.common.util.concurrent.RateLimiter rateLimiter)
Take a snap shot of this columnfamily store.- Parameters:
snapshotName
- the name of the associated with the snapshotskipFlush
- Skip blocking flush of memtablerateLimiter
- Rate limiter for hardlinks-per-second
-
snapshot
public java.util.Set<SSTableReader> snapshot(java.lang.String snapshotName, com.google.common.base.Predicate<SSTableReader> predicate, boolean ephemeral, boolean skipFlush)
- Parameters:
ephemeral
- If this flag is set to true, the snapshot will be cleaned up during next startupskipFlush
- Skip blocking flush of memtable
-
snapshot
public java.util.Set<SSTableReader> snapshot(java.lang.String snapshotName, com.google.common.base.Predicate<SSTableReader> predicate, boolean ephemeral, boolean skipFlush, com.google.common.util.concurrent.RateLimiter rateLimiter)
- Parameters:
ephemeral
- If this flag is set to true, the snapshot will be cleaned up during next startupskipFlush
- Skip blocking flush of memtablerateLimiter
- Rate limiter for hardlinks-per-second
-
snapshotExists
public boolean snapshotExists(java.lang.String snapshotName)
-
getSnapshotCreationTime
public long getSnapshotCreationTime(java.lang.String snapshotName)
-
clearSnapshot
public void clearSnapshot(java.lang.String snapshotName)
Clear all the snapshots for a given column family.- Parameters:
snapshotName
- the user supplied snapshot name. If left empty, all the snapshots will be cleaned.
-
getSnapshotDetails
public java.util.Map<java.lang.String,Directories.SnapshotSizeDetails> getSnapshotDetails()
- Returns:
- Return a map of all snapshots to space being used The pair for a snapshot has true size and size on disk.
-
getRawCachedPartition
public CachedPartition getRawCachedPartition(DecoratedKey key)
- Returns:
- the cached partition for @param key if it is already present in the cache. Not that this will not readAndCache the parition if it is not present, nor are these calls counted in cache statistics. Note that this WILL cause deserialization of a SerializingCache partition, so if all you need to know is whether a partition is present or not, use containsCachedParition instead.
-
invalidateRowCache
public int invalidateRowCache(java.util.Collection<Bounds<Token>> boundsToInvalidate)
-
invalidateCounterCache
public int invalidateCounterCache(java.util.Collection<Bounds<Token>> boundsToInvalidate)
-
containsCachedParition
public boolean containsCachedParition(DecoratedKey key)
- Returns:
- true if @param key is contained in the row cache
-
invalidateCachedPartition
public void invalidateCachedPartition(RowCacheKey key)
-
invalidateCachedPartition
public void invalidateCachedPartition(DecoratedKey key)
-
getCachedCounter
public ClockAndCount getCachedCounter(java.nio.ByteBuffer partitionKey, Clustering<?> clustering, ColumnMetadata column, CellPath path)
-
putCachedCounter
public void putCachedCounter(java.nio.ByteBuffer partitionKey, Clustering<?> clustering, ColumnMetadata column, CellPath path, ClockAndCount clockAndCount)
-
forceMajorCompaction
public void forceMajorCompaction()
-
forceMajorCompaction
public void forceMajorCompaction(boolean splitOutput)
Description copied from interface:ColumnFamilyStoreMBean
force a major compaction of this column family- Specified by:
forceMajorCompaction
in interfaceColumnFamilyStoreMBean
- Parameters:
splitOutput
- true if the output of the major compaction should be split in several sstables
-
forceCompactionForTokenRange
public void forceCompactionForTokenRange(java.util.Collection<Range<Token>> tokenRanges) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException
Description copied from interface:ColumnFamilyStoreMBean
Forces a major compaction of specified token ranges in this column family.The token ranges will be interpreted as closed intervals to match the closed interval defined by the first and last keys of a sstable, even though the
Range
class is suppossed to be half-open by definition.- Specified by:
forceCompactionForTokenRange
in interfaceColumnFamilyStoreMBean
- Parameters:
tokenRanges
- The token ranges to be compacted, interpreted as closed intervals.- Throws:
java.util.concurrent.ExecutionException
java.lang.InterruptedException
-
all
public static java.lang.Iterable<ColumnFamilyStore> all()
-
keySamples
public java.lang.Iterable<DecoratedKey> keySamples(Range<Token> range)
-
clearUnsafe
public void clearUnsafe()
For testing. No effort is made to clear historical or even the current memtables, nor for thread safety. All we do is wipe the sstable containers clean, while leaving the actual data files present on disk. (This allows tests to easily call loadNewSSTables on them.)
-
truncateBlocking
public void truncateBlocking()
-
truncateBlockingWithoutSnapshot
public void truncateBlockingWithoutSnapshot()
-
dumpMemtable
public java.util.concurrent.Future<CommitLogPosition> dumpMemtable()
Drops current memtable without flushing to disk. This should only be called when truncating a column family which is not durable.
-
runWithCompactionsDisabled
public <V> V runWithCompactionsDisabled(java.util.concurrent.Callable<V> callable, boolean interruptValidation, boolean interruptViews)
-
runWithCompactionsDisabled
public <V> V runWithCompactionsDisabled(java.util.concurrent.Callable<V> callable, com.google.common.base.Predicate<SSTableReader> sstablesPredicate, boolean interruptValidation, boolean interruptViews, boolean interruptIndexes)
Runs callable with compactions paused and compactions including sstables matching sstablePredicate stopped- Parameters:
callable
- what to do when compactions are pausedsstablesPredicate
- which sstables should we cancel compactions forinterruptValidation
- if we should interrupt validation compactionsinterruptViews
- if we should interrupt view compactionsinterruptIndexes
- if we should interrupt compactions on indexes. NOTE: if you set this to true your sstablePredicate must be able to handle LocalPartitioner sstables!
-
markAllCompacting
public LifecycleTransaction markAllCompacting(OperationType operationType)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
disableAutoCompaction
public void disableAutoCompaction()
-
enableAutoCompaction
public void enableAutoCompaction()
-
enableAutoCompaction
public void enableAutoCompaction(boolean waitForFutures)
used for tests - to be able to check things after a minor compaction- Parameters:
waitForFutures
- if we should block until autocompaction is done
-
isAutoCompactionDisabled
public boolean isAutoCompactionDisabled()
- Specified by:
isAutoCompactionDisabled
in interfaceColumnFamilyStoreMBean
-
getCompactionStrategyManager
public CompactionStrategyManager getCompactionStrategyManager()
-
setCrcCheckChance
public void setCrcCheckChance(double crcCheckChance)
Description copied from interface:ColumnFamilyStoreMBean
Set new crc check chance- Specified by:
setCrcCheckChance
in interfaceColumnFamilyStoreMBean
-
getCrcCheckChance
public java.lang.Double getCrcCheckChance()
-
setCompactionThresholds
public void setCompactionThresholds(int minThreshold, int maxThreshold)
Description copied from interface:ColumnFamilyStoreMBean
Sets the maximum and maximum number of SSTables in queue before compaction kicks off- Specified by:
setCompactionThresholds
in interfaceColumnFamilyStoreMBean
-
getMinimumCompactionThreshold
public int getMinimumCompactionThreshold()
Description copied from interface:ColumnFamilyStoreMBean
Gets the minimum number of sstables in queue before compaction kicks off- Specified by:
getMinimumCompactionThreshold
in interfaceColumnFamilyStoreMBean
-
setMinimumCompactionThreshold
public void setMinimumCompactionThreshold(int minCompactionThreshold)
Description copied from interface:ColumnFamilyStoreMBean
Sets the minimum number of sstables in queue before compaction kicks off- Specified by:
setMinimumCompactionThreshold
in interfaceColumnFamilyStoreMBean
-
getMaximumCompactionThreshold
public int getMaximumCompactionThreshold()
Description copied from interface:ColumnFamilyStoreMBean
Gets the maximum number of sstables in queue before compaction kicks off- Specified by:
getMaximumCompactionThreshold
in interfaceColumnFamilyStoreMBean
-
setMaximumCompactionThreshold
public void setMaximumCompactionThreshold(int maxCompactionThreshold)
Description copied from interface:ColumnFamilyStoreMBean
Sets the maximum number of sstables in queue before compaction kicks off- Specified by:
setMaximumCompactionThreshold
in interfaceColumnFamilyStoreMBean
-
getMeanEstimatedCellPerPartitionCount
public int getMeanEstimatedCellPerPartitionCount()
-
getMeanPartitionSize
public double getMeanPartitionSize()
-
getMeanRowCount
public int getMeanRowCount()
-
estimateKeys
public long estimateKeys()
- Specified by:
estimateKeys
in interfaceColumnFamilyStoreMBean
-
getPartitioner
public IPartitioner getPartitioner()
-
decorateKey
public DecoratedKey decorateKey(java.nio.ByteBuffer key)
-
isIndex
public boolean isIndex()
true if this CFS contains secondary index data
-
concatWithIndexes
public java.lang.Iterable<ColumnFamilyStore> concatWithIndexes()
-
getBuiltIndexes
public java.util.List<java.lang.String> getBuiltIndexes()
Description copied from interface:ColumnFamilyStoreMBean
Returns a list of the names of the built column indexes for current store- Specified by:
getBuiltIndexes
in interfaceColumnFamilyStoreMBean
- Returns:
- list of the index names
-
getUnleveledSSTables
public int getUnleveledSSTables()
- Specified by:
getUnleveledSSTables
in interfaceColumnFamilyStoreMBean
- Returns:
- the number of SSTables in L0. Always return 0 if Leveled compaction is not enabled.
-
getSSTableCountPerLevel
public int[] getSSTableCountPerLevel()
- Specified by:
getSSTableCountPerLevel
in interfaceColumnFamilyStoreMBean
- Returns:
- sstable count for each level. null unless leveled compaction is used. array index corresponds to level(int[0] is for level 0, ...).
-
getLevelFanoutSize
public int getLevelFanoutSize()
- Specified by:
getLevelFanoutSize
in interfaceColumnFamilyStoreMBean
- Returns:
- sstable fanout size for level compaction strategy.
-
isEmpty
public boolean isEmpty()
-
isRowCacheEnabled
public boolean isRowCacheEnabled()
-
isCounterCacheEnabled
public boolean isCounterCacheEnabled()
-
isKeyCacheEnabled
public boolean isKeyCacheEnabled()
-
discardSSTables
public void discardSSTables(long truncatedAt)
Discard all SSTables that were created before given timestamp. Caller should first ensure that comapctions have quiesced.- Parameters:
truncatedAt
- The timestamp of the truncation (all SSTables before that timestamp are going be marked as compacted)
-
getDroppableTombstoneRatio
public double getDroppableTombstoneRatio()
Description copied from interface:ColumnFamilyStoreMBean
Get the ratio of droppable tombstones to real columns (and non-droppable tombstones)- Specified by:
getDroppableTombstoneRatio
in interfaceColumnFamilyStoreMBean
- Returns:
- ratio
-
trueSnapshotsSize
public long trueSnapshotsSize()
- Specified by:
trueSnapshotsSize
in interfaceColumnFamilyStoreMBean
- Returns:
- the size of SSTables in "snapshots" subdirectory which aren't live anymore
-
getIfExists
public static ColumnFamilyStore getIfExists(TableId id)
Returns a ColumnFamilyStore by id if it exists, null otherwise Differently from others, this method does not throw exception if the table does not exist.
-
getIfExists
public static ColumnFamilyStore getIfExists(java.lang.String ksName, java.lang.String cfName)
Returns a ColumnFamilyStore by ksname and cfname if it exists, null otherwise Differently from others, this method does not throw exception if the keyspace or table does not exist.
-
metricsFor
public static TableMetrics metricsFor(TableId tableId)
-
getDiskBoundaries
public DiskBoundaries getDiskBoundaries()
-
invalidateDiskBoundaries
public void invalidateDiskBoundaries()
-
setNeverPurgeTombstones
public void setNeverPurgeTombstones(boolean value)
- Specified by:
setNeverPurgeTombstones
in interfaceColumnFamilyStoreMBean
-
getNeverPurgeTombstones
public boolean getNeverPurgeTombstones()
- Specified by:
getNeverPurgeTombstones
in interfaceColumnFamilyStoreMBean
-
hasMisplacedSSTables
public boolean hasMisplacedSSTables()
Description copied from interface:ColumnFamilyStoreMBean
Check SSTables whether or not they are misplaced.- Specified by:
hasMisplacedSSTables
in interfaceColumnFamilyStoreMBean
- Returns:
- true if any of the SSTables is misplaced. If all SSTables are correctly placed or the partitioner does not support splitting, it returns false.
-
-