Class SSTableWriter
- java.lang.Object
-
- org.apache.cassandra.io.sstable.SSTable
-
- org.apache.cassandra.io.sstable.format.SSTableWriter
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,Transactional
- Direct Known Subclasses:
BigTableWriter
public abstract class SSTableWriter extends SSTable implements Transactional
This is the API all table writers must implement. TableWriter.create() is the primary way to create a writer for a particular format. The format information is part of the Descriptor.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SSTableWriter.Factory
protected class
SSTableWriter.TransactionalProxy
-
Nested classes/interfaces inherited from interface org.apache.cassandra.utils.concurrent.Transactional
Transactional.AbstractTransactional
-
-
Field Summary
Fields Modifier and Type Field Description protected SerializationHeader
header
protected boolean
isTransient
protected long
keyCount
protected long
maxDataAge
protected MetadataCollector
metadataCollector
protected java.util.Collection<SSTableFlushObserver>
observers
protected java.util.UUID
pendingRepair
protected long
repairedAt
protected RowIndexEntry.IndexSerializer
rowIndexEntrySerializer
protected SSTableWriter.TransactionalProxy
txnProxy
-
Fields inherited from class org.apache.cassandra.io.sstable.SSTable
components, compression, descriptor, first, last, metadata, optimizationStrategy, TOMBSTONE_HISTOGRAM_BIN_SIZE, TOMBSTONE_HISTOGRAM_SPOOL_SIZE, TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
SSTableWriter(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, TableMetadataRef metadata, MetadataCollector metadataCollector, SerializationHeader header, java.util.Collection<SSTableFlushObserver> observers)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
abort()
java.lang.Throwable
abort(java.lang.Throwable accumulate)
abstract RowIndexEntry
append(UnfilteredRowIterator iterator)
Appends partition data to this writer.void
close()
java.lang.Throwable
commit(java.lang.Throwable accumulate)
static void
copy(Descriptor tmpdesc, Descriptor newdesc, java.util.Set<Component> components)
static SSTableWriter
create(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, int sstableLevel, SerializationHeader header, java.util.Collection<Index> indexes, LifecycleNewTracker lifecycleNewTracker)
static SSTableWriter
create(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, SerializationHeader header, java.util.Collection<Index> indexes, LifecycleNewTracker lifecycleNewTracker)
static SSTableWriter
create(Descriptor descriptor, java.lang.Long keyCount, java.lang.Long repairedAt, java.util.UUID pendingRepair, boolean isTransient, TableMetadataRef metadata, MetadataCollector metadataCollector, SerializationHeader header, java.util.Collection<Index> indexes, LifecycleNewTracker lifecycleNewTracker)
static SSTableWriter
create(TableMetadataRef metadata, Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, int sstableLevel, SerializationHeader header, java.util.Collection<Index> indexes, LifecycleNewTracker lifecycleNewTracker)
protected java.util.Map<MetadataType,MetadataComponent>
finalizeMetadata()
SSTableReader
finish(boolean openResult)
SSTableReader
finish(long repairedAt, long maxDataAge, boolean openResult)
SSTableReader
finished()
Open the resultant SSTableReader once it has been fully written, and all related state is ready to be finalised including other sstables being written involved in the same operationlong
getEstimatedOnDiskBytesWritten()
abstract long
getFilePointer()
abstract long
getOnDiskFilePointer()
static void
hardlink(Descriptor tmpdesc, Descriptor newdesc, java.util.Set<Component> components)
abstract void
mark()
abstract SSTableReader
openEarly()
Open the resultant SSTableReader before it has been fully writtenabstract SSTableReader
openFinalEarly()
Open the resultant SSTableReader once it has been fully written, but before the _set_ of tables that are being written together as one atomic operation are all readyvoid
prepareToCommit()
void
releaseMetadataOverhead()
static void
rename(Descriptor tmpdesc, Descriptor newdesc, java.util.Set<Component> components)
abstract void
resetAndTruncate()
SSTableWriter
setMaxDataAge(long maxDataAge)
SSTableWriter
setOpenResult(boolean openResult)
SSTableWriter
setRepairedAt(long repairedAt)
protected StatsMetadata
statsMetadata()
protected abstract SSTableWriter.TransactionalProxy
txnProxy()
-
Methods inherited from class org.apache.cassandra.io.sstable.SSTable
addComponents, appendTOC, bytesOnDisk, componentsFor, decorateKey, delete, discoverComponentsFor, estimateRowsFromIndex, getAllFilePaths, getBounds, getColumnFamilyName, getFilename, getIndexFilename, getKeyspaceName, getMinimalKey, getPartitioner, metadata, readTOC, readTOC, toString, tryComponentFromFilename, tryDescriptorFromFilename, validateRepairedMetadata
-
-
-
-
Field Detail
-
repairedAt
protected long repairedAt
-
pendingRepair
protected java.util.UUID pendingRepair
-
isTransient
protected boolean isTransient
-
maxDataAge
protected long maxDataAge
-
keyCount
protected final long keyCount
-
metadataCollector
protected final MetadataCollector metadataCollector
-
rowIndexEntrySerializer
protected final RowIndexEntry.IndexSerializer rowIndexEntrySerializer
-
header
protected final SerializationHeader header
-
txnProxy
protected final SSTableWriter.TransactionalProxy txnProxy
-
observers
protected final java.util.Collection<SSTableFlushObserver> observers
-
-
Constructor Detail
-
SSTableWriter
protected SSTableWriter(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, TableMetadataRef metadata, MetadataCollector metadataCollector, SerializationHeader header, java.util.Collection<SSTableFlushObserver> observers)
-
-
Method Detail
-
txnProxy
protected abstract SSTableWriter.TransactionalProxy txnProxy()
-
create
public static SSTableWriter create(Descriptor descriptor, java.lang.Long keyCount, java.lang.Long repairedAt, java.util.UUID pendingRepair, boolean isTransient, TableMetadataRef metadata, MetadataCollector metadataCollector, SerializationHeader header, java.util.Collection<Index> indexes, LifecycleNewTracker lifecycleNewTracker)
-
create
public static SSTableWriter create(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, int sstableLevel, SerializationHeader header, java.util.Collection<Index> indexes, LifecycleNewTracker lifecycleNewTracker)
-
create
public static SSTableWriter create(TableMetadataRef metadata, Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, int sstableLevel, SerializationHeader header, java.util.Collection<Index> indexes, LifecycleNewTracker lifecycleNewTracker)
-
create
public static SSTableWriter create(Descriptor descriptor, long keyCount, long repairedAt, java.util.UUID pendingRepair, boolean isTransient, SerializationHeader header, java.util.Collection<Index> indexes, LifecycleNewTracker lifecycleNewTracker)
-
mark
public abstract void mark()
-
append
public abstract RowIndexEntry append(UnfilteredRowIterator iterator)
Appends partition data to this writer.- Parameters:
iterator
- the partition to write- Returns:
- the created index entry if something was written, that is if
iterator
wasn't empty,null
otherwise. - Throws:
FSWriteError
- if a write to the dataFile fails
-
getFilePointer
public abstract long getFilePointer()
-
getOnDiskFilePointer
public abstract long getOnDiskFilePointer()
-
getEstimatedOnDiskBytesWritten
public long getEstimatedOnDiskBytesWritten()
-
resetAndTruncate
public abstract void resetAndTruncate()
-
setRepairedAt
public SSTableWriter setRepairedAt(long repairedAt)
-
setMaxDataAge
public SSTableWriter setMaxDataAge(long maxDataAge)
-
setOpenResult
public SSTableWriter setOpenResult(boolean openResult)
-
openEarly
public abstract SSTableReader openEarly()
Open the resultant SSTableReader before it has been fully written
-
openFinalEarly
public abstract SSTableReader openFinalEarly()
Open the resultant SSTableReader once it has been fully written, but before the _set_ of tables that are being written together as one atomic operation are all ready
-
finish
public SSTableReader finish(long repairedAt, long maxDataAge, boolean openResult)
-
finish
public SSTableReader finish(boolean openResult)
-
finished
public SSTableReader finished()
Open the resultant SSTableReader once it has been fully written, and all related state is ready to be finalised including other sstables being written involved in the same operation
-
prepareToCommit
public final void prepareToCommit()
- Specified by:
prepareToCommit
in interfaceTransactional
-
commit
public final java.lang.Throwable commit(java.lang.Throwable accumulate)
- Specified by:
commit
in interfaceTransactional
-
abort
public final java.lang.Throwable abort(java.lang.Throwable accumulate)
- Specified by:
abort
in interfaceTransactional
-
close
public final void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfaceTransactional
-
abort
public final void abort()
-
finalizeMetadata
protected java.util.Map<MetadataType,MetadataComponent> finalizeMetadata()
-
statsMetadata
protected StatsMetadata statsMetadata()
-
releaseMetadataOverhead
public void releaseMetadataOverhead()
-
rename
public static void rename(Descriptor tmpdesc, Descriptor newdesc, java.util.Set<Component> components)
-
copy
public static void copy(Descriptor tmpdesc, Descriptor newdesc, java.util.Set<Component> components)
-
hardlink
public static void hardlink(Descriptor tmpdesc, Descriptor newdesc, java.util.Set<Component> components)
-
-