@InterfaceAudience.Private public abstract class Compactor<T extends Compactor.CellSink> extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static interface |
Compactor.CellSink |
protected static interface |
Compactor.CellSinkFactory<S> |
protected static class |
Compactor.FileDetails
The sole reason this class exists is that java has no ref/out/pointer parameters.
|
protected static interface |
Compactor.InternalScannerFactory |
Modifier and Type | Field and Description |
---|---|
protected Compression.Algorithm |
compactionCompression |
protected int |
compactionKVMax |
protected Configuration |
conf |
protected Compactor.InternalScannerFactory |
defaultScannerFactory |
protected int |
keepSeqIdPeriod
specify how many days to keep MVCC values during major compaction
|
protected CompactionProgress |
progress |
protected Store |
store |
Modifier and Type | Method and Description |
---|---|
protected abstract void |
abortWriter(T writer) |
protected void |
appendMetadataAndCloseWriter(StoreFile.Writer writer,
Compactor.FileDetails fd,
boolean isMajor)
Appends the metadata and closes the writer.
|
protected abstract java.util.List<Path> |
commitWriter(T writer,
Compactor.FileDetails fd,
CompactionRequest request) |
protected java.util.List<Path> |
compact(CompactionRequest request,
Compactor.InternalScannerFactory scannerFactory,
Compactor.CellSinkFactory<T> sinkFactory,
CompactionThroughputController throughputController,
User user) |
protected java.util.List<StoreFileScanner> |
createFileScanners(java.util.Collection<StoreFile> filesToCompact,
long smallestReadPoint)
Creates file scanners for compaction.
|
protected InternalScanner |
createScanner(Store store,
java.util.List<StoreFileScanner> scanners,
long smallestReadPoint,
long earliestPutTs,
byte[] dropDeletesFromRow,
byte[] dropDeletesToRow) |
protected InternalScanner |
createScanner(Store store,
java.util.List<StoreFileScanner> scanners,
ScanType scanType,
long smallestReadPoint,
long earliestPutTs) |
protected StoreFile.Writer |
createTmpWriter(Compactor.FileDetails fd,
boolean shouldDropBehind)
Creates a writer for a new file in a temporary directory.
|
protected Compactor.FileDetails |
getFileDetails(java.util.Collection<StoreFile> filesToCompact,
boolean allFiles)
Extracts some details about the files to compact that are commonly needed by compactors.
|
CompactionProgress |
getProgress() |
protected long |
getSmallestReadPoint() |
protected boolean |
performCompaction(Compactor.FileDetails fd,
InternalScanner scanner,
Compactor.CellSink writer,
long smallestReadPoint,
boolean cleanSeqId,
CompactionThroughputController throughputController,
boolean major)
Performs the compaction.
|
protected InternalScanner |
postCreateCoprocScanner(CompactionRequest request,
ScanType scanType,
InternalScanner scanner,
User user)
Calls coprocessor, if any, to create scanners - after normal scanner creation.
|
protected InternalScanner |
preCreateCoprocScanner(CompactionRequest request,
ScanType scanType,
long earliestPutTs,
java.util.List<StoreFileScanner> scanners)
Calls coprocessor, if any, to create compaction scanner - before normal scanner creation.
|
protected InternalScanner |
preCreateCoprocScanner(CompactionRequest request,
ScanType scanType,
long earliestPutTs,
java.util.List<StoreFileScanner> scanners,
User user) |
protected volatile CompactionProgress progress
protected final Configuration conf
protected final Store store
protected final int compactionKVMax
protected final Compression.Algorithm compactionCompression
protected int keepSeqIdPeriod
protected final Compactor.InternalScannerFactory defaultScannerFactory
public CompactionProgress getProgress()
protected Compactor.FileDetails getFileDetails(java.util.Collection<StoreFile> filesToCompact, boolean allFiles) throws java.io.IOException
filesToCompact
- Files.allFiles
- Whether all files are included for compactionjava.io.IOException
protected java.util.List<StoreFileScanner> createFileScanners(java.util.Collection<StoreFile> filesToCompact, long smallestReadPoint) throws java.io.IOException
filesToCompact
- Files.java.io.IOException
protected long getSmallestReadPoint()
protected StoreFile.Writer createTmpWriter(Compactor.FileDetails fd, boolean shouldDropBehind) throws java.io.IOException
fd
- The file details.java.io.IOException
- if creation failedprotected java.util.List<Path> compact(CompactionRequest request, Compactor.InternalScannerFactory scannerFactory, Compactor.CellSinkFactory<T> sinkFactory, CompactionThroughputController throughputController, User user) throws java.io.IOException
java.io.IOException
protected abstract java.util.List<Path> commitWriter(T writer, Compactor.FileDetails fd, CompactionRequest request) throws java.io.IOException
java.io.IOException
protected abstract void abortWriter(T writer) throws java.io.IOException
java.io.IOException
protected InternalScanner preCreateCoprocScanner(CompactionRequest request, ScanType scanType, long earliestPutTs, java.util.List<StoreFileScanner> scanners) throws java.io.IOException
request
- Compaction request.scanType
- Scan type.earliestPutTs
- Earliest put ts.scanners
- File scanners for compaction files.java.io.IOException
protected InternalScanner preCreateCoprocScanner(CompactionRequest request, ScanType scanType, long earliestPutTs, java.util.List<StoreFileScanner> scanners, User user) throws java.io.IOException
java.io.IOException
protected InternalScanner postCreateCoprocScanner(CompactionRequest request, ScanType scanType, InternalScanner scanner, User user) throws java.io.IOException
request
- Compaction request.scanType
- Scan type.scanner
- The default scanner created for compaction.java.io.IOException
protected boolean performCompaction(Compactor.FileDetails fd, InternalScanner scanner, Compactor.CellSink writer, long smallestReadPoint, boolean cleanSeqId, CompactionThroughputController throughputController, boolean major) throws java.io.IOException
fd
- FileDetails of cell sink writerscanner
- Where to read from.writer
- Where to write to.smallestReadPoint
- Smallest read point.cleanSeqId
- When true, remove seqId(used to be mvcc) value which is <= smallestReadPointmajor
- Is a major compaction.java.io.IOException
protected InternalScanner createScanner(Store store, java.util.List<StoreFileScanner> scanners, ScanType scanType, long smallestReadPoint, long earliestPutTs) throws java.io.IOException
store
- storescanners
- Store file scanners.scanType
- Scan type.smallestReadPoint
- Smallest MVCC read point.earliestPutTs
- Earliest put across all files.java.io.IOException
protected InternalScanner createScanner(Store store, java.util.List<StoreFileScanner> scanners, long smallestReadPoint, long earliestPutTs, byte[] dropDeletesFromRow, byte[] dropDeletesToRow) throws java.io.IOException
store
- The store.scanners
- Store file scanners.smallestReadPoint
- Smallest MVCC read point.earliestPutTs
- Earliest put across all files.dropDeletesFromRow
- Drop deletes starting with this row, inclusive. Can be null.dropDeletesToRow
- Drop deletes ending with this row, exclusive. Can be null.java.io.IOException
protected void appendMetadataAndCloseWriter(StoreFile.Writer writer, Compactor.FileDetails fd, boolean isMajor) throws java.io.IOException
writer
- The current store writer.fd
- The file details.isMajor
- Is a major compaction.java.io.IOException