public class CompactionManager extends java.lang.Object implements CompactionManagerMBean
A singleton which manages a private executor of ongoing compactions.
Scheduling for compaction is accomplished by swapping sstables to be compacted into a set via Tracker. New scheduling attempts will ignore currently compacting sstables.| Modifier and Type | Class and Description |
|---|---|
static class |
CompactionManager.AllSSTableOpStatus |
static interface |
CompactionManager.CompactionExecutorStatsCollector |
| Modifier and Type | Field and Description |
|---|---|
static int |
GC_ALL |
static CompactionManager |
instance |
static java.lang.ThreadLocal<java.lang.Boolean> |
isCompactionManager |
static java.lang.String |
MBEAN_OBJECT_NAME |
static int |
NO_GC |
| Constructor and Description |
|---|
CompactionManager() |
| Modifier and Type | Method and Description |
|---|---|
static SSTableWriter |
createWriter(ColumnFamilyStore cfs,
java.io.File compactionFileLocation,
int expectedBloomFilterSize,
long repairedAt,
SSTableReader sstable,
LifecycleTransaction txn) |
static SSTableWriter |
createWriterForAntiCompaction(ColumnFamilyStore cfs,
java.io.File compactionFileLocation,
int expectedBloomFilterSize,
long repairedAt,
java.util.Collection<SSTableReader> sstables,
LifecycleTransaction txn) |
void |
disableAutoCompaction() |
void |
finishCompactionsAndShutdown(long timeout,
java.util.concurrent.TimeUnit unit) |
void |
forceUserDefinedCompaction(java.lang.String dataFiles)
Triggers the compaction of user specified sstables.
|
int |
getActiveCompactions() |
javax.management.openmbean.TabularData |
getCompactionHistory()
compaction history
|
java.util.List<java.util.Map<java.lang.String,java.lang.String>> |
getCompactions()
List of running compaction objects.
|
java.util.List<java.lang.String> |
getCompactionSummary()
List of running compaction summary strings.
|
long |
getCompletedTasks() |
int |
getCoreCompactorThreads()
Returns core size of compaction thread pool
|
int |
getCoreValidationThreads()
Returns core size of validation thread pool
|
static int |
getDefaultGcBefore(ColumnFamilyStore cfs,
int nowInSec) |
int |
getMaximumCompactorThreads()
Returns maximum size of compaction thread pool
|
int |
getMaximumValidatorThreads()
Returns size of validator thread pool
|
int |
getPendingTasks() |
com.google.common.util.concurrent.RateLimiter |
getRateLimiter()
Gets compaction rate limiter.
|
long |
getTotalBytesCompacted() |
long |
getTotalCompactionsCompleted() |
void |
interruptCompactionFor(java.lang.Iterable<CFMetaData> columnFamilies,
boolean interruptValidation)
Try to stop all of the compactions for given ColumnFamilies.
|
void |
interruptCompactionForCFs(java.lang.Iterable<ColumnFamilyStore> cfss,
boolean interruptValidation) |
boolean |
isCompacting(java.lang.Iterable<ColumnFamilyStore> cfses) |
void |
performAnticompaction(ColumnFamilyStore cfs,
java.util.Collection<Range<Token>> ranges,
Refs<SSTableReader> validatedForRepair,
LifecycleTransaction txn,
long repairedAt)
Make sure the {validatedForRepair} are marked for compaction before calling this.
|
CompactionManager.AllSSTableOpStatus |
performCleanup(ColumnFamilyStore cfStore) |
void |
performMaximal(ColumnFamilyStore cfStore,
boolean splitOutput) |
CompactionManager.AllSSTableOpStatus |
performScrub(ColumnFamilyStore cfs,
boolean skipCorrupted,
boolean checkData) |
CompactionManager.AllSSTableOpStatus |
performScrub(ColumnFamilyStore cfs,
boolean skipCorrupted,
boolean checkData,
boolean offline) |
CompactionManager.AllSSTableOpStatus |
performSSTableRewrite(ColumnFamilyStore cfs,
boolean excludeCurrentVersion) |
CompactionManager.AllSSTableOpStatus |
performVerify(ColumnFamilyStore cfs,
boolean extendedVerify) |
void |
setCoreCompactorThreads(int number)
Allows user to resize maximum size of the compaction thread pool.
|
void |
setCoreValidationThreads(int number)
Allows user to resize maximum size of the compaction thread pool.
|
void |
setMaximumCompactorThreads(int number)
Allows user to resize maximum size of the compaction thread pool.
|
void |
setMaximumValidatorThreads(int number)
Allows user to resize maximum size of the validator thread pool.
|
void |
stopCompaction(java.lang.String type)
Stop all running compaction-like tasks having the provided
type. |
void |
stopCompactionById(java.lang.String compactionId)
Stop an individual running compaction using the compactionId.
|
com.google.common.util.concurrent.ListenableFuture<?> |
submitAntiCompaction(ColumnFamilyStore cfs,
java.util.Collection<Range<Token>> ranges,
Refs<SSTableReader> sstables,
long repairedAt) |
java.util.List<java.util.concurrent.Future<?>> |
submitBackground(ColumnFamilyStore cfs)
Call this whenever a compaction might be needed on the given columnfamily.
|
java.util.concurrent.Future<?> |
submitCacheWrite(AutoSavingCache.Writer writer) |
java.util.concurrent.Future<?> |
submitIndexBuild(SecondaryIndexBuilder builder)
Is not scheduled, because it is performing disjoint work from sstable compaction.
|
java.util.concurrent.Future<?> |
submitMaterializedViewBuilder(MaterializedViewBuilder builder) |
java.util.List<java.util.concurrent.Future<?>> |
submitMaximal(ColumnFamilyStore cfStore,
int gcBefore,
boolean splitOutput) |
java.util.concurrent.Future<?> |
submitUserDefined(ColumnFamilyStore cfs,
java.util.Collection<Descriptor> dataFiles,
int gcBefore) |
java.util.concurrent.Future<java.lang.Object> |
submitValidation(ColumnFamilyStore cfStore,
Validator validator)
Does not mutate data, so is not scheduled.
|
void |
waitForCessation(java.lang.Iterable<ColumnFamilyStore> cfss) |
public static final java.lang.String MBEAN_OBJECT_NAME
public static final CompactionManager instance
public static final int NO_GC
public static final int GC_ALL
public static final java.lang.ThreadLocal<java.lang.Boolean> isCompactionManager
public com.google.common.util.concurrent.RateLimiter getRateLimiter()
public java.util.List<java.util.concurrent.Future<?>> submitBackground(ColumnFamilyStore cfs)
public boolean isCompacting(java.lang.Iterable<ColumnFamilyStore> cfses)
public void finishCompactionsAndShutdown(long timeout,
java.util.concurrent.TimeUnit unit)
throws java.lang.InterruptedException
java.lang.InterruptedExceptionpublic CompactionManager.AllSSTableOpStatus performScrub(ColumnFamilyStore cfs, boolean skipCorrupted, boolean checkData) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
java.lang.InterruptedExceptionjava.util.concurrent.ExecutionExceptionpublic CompactionManager.AllSSTableOpStatus performScrub(ColumnFamilyStore cfs, boolean skipCorrupted, boolean checkData, boolean offline) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
java.lang.InterruptedExceptionjava.util.concurrent.ExecutionExceptionpublic CompactionManager.AllSSTableOpStatus performVerify(ColumnFamilyStore cfs, boolean extendedVerify) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
java.lang.InterruptedExceptionjava.util.concurrent.ExecutionExceptionpublic CompactionManager.AllSSTableOpStatus performSSTableRewrite(ColumnFamilyStore cfs, boolean excludeCurrentVersion) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
java.lang.InterruptedExceptionjava.util.concurrent.ExecutionExceptionpublic CompactionManager.AllSSTableOpStatus performCleanup(ColumnFamilyStore cfStore) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
java.lang.InterruptedExceptionjava.util.concurrent.ExecutionExceptionpublic com.google.common.util.concurrent.ListenableFuture<?> submitAntiCompaction(ColumnFamilyStore cfs, java.util.Collection<Range<Token>> ranges, Refs<SSTableReader> sstables, long repairedAt)
public void performAnticompaction(ColumnFamilyStore cfs, java.util.Collection<Range<Token>> ranges, Refs<SSTableReader> validatedForRepair, LifecycleTransaction txn, long repairedAt) throws java.lang.InterruptedException, java.io.IOException
cfs - ranges - Ranges that the repair was carried out onvalidatedForRepair - SSTables containing the repaired ranges. Should be referenced before passing them.java.lang.InterruptedExceptionjava.io.IOExceptionpublic void performMaximal(ColumnFamilyStore cfStore, boolean splitOutput)
public java.util.List<java.util.concurrent.Future<?>> submitMaximal(ColumnFamilyStore cfStore, int gcBefore, boolean splitOutput)
public void forceUserDefinedCompaction(java.lang.String dataFiles)
CompactionManagerMBeanforceUserDefinedCompaction in interface CompactionManagerMBeandataFiles - a comma separated list of sstable file to compact.
must contain keyspace and columnfamily name in path(for 2.1+) or file name itself.public java.util.concurrent.Future<?> submitUserDefined(ColumnFamilyStore cfs, java.util.Collection<Descriptor> dataFiles, int gcBefore)
public java.util.concurrent.Future<java.lang.Object> submitValidation(ColumnFamilyStore cfStore, Validator validator)
public void disableAutoCompaction()
public static SSTableWriter createWriter(ColumnFamilyStore cfs, java.io.File compactionFileLocation, int expectedBloomFilterSize, long repairedAt, SSTableReader sstable, LifecycleTransaction txn)
public static SSTableWriter createWriterForAntiCompaction(ColumnFamilyStore cfs, java.io.File compactionFileLocation, int expectedBloomFilterSize, long repairedAt, java.util.Collection<SSTableReader> sstables, LifecycleTransaction txn)
public java.util.concurrent.Future<?> submitIndexBuild(SecondaryIndexBuilder builder)
public java.util.concurrent.Future<?> submitCacheWrite(AutoSavingCache.Writer writer)
public static int getDefaultGcBefore(ColumnFamilyStore cfs, int nowInSec)
public java.util.concurrent.Future<?> submitMaterializedViewBuilder(MaterializedViewBuilder builder)
public int getActiveCompactions()
public java.util.List<java.util.Map<java.lang.String,java.lang.String>> getCompactions()
CompactionManagerMBeangetCompactions in interface CompactionManagerMBeanpublic java.util.List<java.lang.String> getCompactionSummary()
CompactionManagerMBeangetCompactionSummary in interface CompactionManagerMBeanpublic javax.management.openmbean.TabularData getCompactionHistory()
CompactionManagerMBeangetCompactionHistory in interface CompactionManagerMBeanpublic long getTotalBytesCompacted()
public long getTotalCompactionsCompleted()
public int getPendingTasks()
public long getCompletedTasks()
public void stopCompaction(java.lang.String type)
CompactionManagerMBeantype.stopCompaction in interface CompactionManagerMBeantype - the type of compaction to stop. Can be one of:
- COMPACTION
- VALIDATION
- CLEANUP
- SCRUB
- INDEX_BUILDpublic void stopCompactionById(java.lang.String compactionId)
CompactionManagerMBeanstopCompactionById in interface CompactionManagerMBeancompactionId - Compaction ID of compaction to stop. Such IDs can be found in
the compactions_in_progress table of the system keyspace.public int getCoreCompactorThreads()
CompactionManagerMBeangetCoreCompactorThreads in interface CompactionManagerMBeanpublic void setCoreCompactorThreads(int number)
CompactionManagerMBeansetCoreCompactorThreads in interface CompactionManagerMBeannumber - New maximum of compaction threadspublic int getMaximumCompactorThreads()
CompactionManagerMBeangetMaximumCompactorThreads in interface CompactionManagerMBeanpublic void setMaximumCompactorThreads(int number)
CompactionManagerMBeansetMaximumCompactorThreads in interface CompactionManagerMBeannumber - New maximum of compaction threadspublic int getCoreValidationThreads()
CompactionManagerMBeangetCoreValidationThreads in interface CompactionManagerMBeanpublic void setCoreValidationThreads(int number)
CompactionManagerMBeansetCoreValidationThreads in interface CompactionManagerMBeannumber - New maximum of compaction threadspublic int getMaximumValidatorThreads()
CompactionManagerMBeangetMaximumValidatorThreads in interface CompactionManagerMBeanpublic void setMaximumValidatorThreads(int number)
CompactionManagerMBeansetMaximumValidatorThreads in interface CompactionManagerMBeannumber - New maximum of validator threadspublic void interruptCompactionFor(java.lang.Iterable<CFMetaData> columnFamilies, boolean interruptValidation)
columnFamilies - The ColumnFamilies to try to stop compaction upon.interruptValidation - true if validation operations for repair should also be interruptedpublic void interruptCompactionForCFs(java.lang.Iterable<ColumnFamilyStore> cfss, boolean interruptValidation)
public void waitForCessation(java.lang.Iterable<ColumnFamilyStore> cfss)
Copyright © 2015 The Apache Software Foundation