Package org.apache.cassandra.db.memtable
Class SkipListMemtable
java.lang.Object
org.apache.cassandra.db.memtable.AbstractMemtable
org.apache.cassandra.db.memtable.AbstractMemtableWithCommitlog
org.apache.cassandra.db.memtable.AbstractAllocatorMemtable
org.apache.cassandra.db.memtable.SkipListMemtable
- All Implemented Interfaces:
Comparable<Memtable>,CellSourceIdentifier,Memtable,UnfilteredSource
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.cassandra.db.memtable.AbstractMemtable
AbstractMemtable.AbstractFlushablePartitionSet<P extends Partition>, AbstractMemtable.ColumnsCollector, AbstractMemtable.StatsCollectorNested classes/interfaces inherited from interface org.apache.cassandra.db.memtable.Memtable
Memtable.Factory, Memtable.FlushablePartitionSet<P extends Partition>, Memtable.LastCommitLogPosition, Memtable.MemoryUsage, Memtable.Owner -
Field Summary
FieldsFields inherited from class org.apache.cassandra.db.memtable.AbstractAllocatorMemtable
allocator, initialComparator, initialFactory, MEMORY_POOL, ownerFields inherited from class org.apache.cassandra.db.memtable.AbstractMemtable
columnsCollector, currentOperations, metadata, minLocalDeletionTime, minTimestamp, statsCollectorFields inherited from interface org.apache.cassandra.db.memtable.Memtable
NO_MIN_TIMESTAMP -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedSkipListMemtable(AtomicReference<CommitLogPosition> commitLogLowerBound, TableMetadataRef metadataRef, Memtable.Owner owner) -
Method Summary
Modifier and TypeMethodDescriptiongetFlushSet(PartitionPosition from, PartitionPosition to) Get the collection of data between the given partition boundaries in a form suitable for flushing.longSize of the data not accounting for any metadata / mapping overheadsbooleanisClean()True if the memtable contains no datavoidFor testing only.longNumber of partitions stored in the memtableorg.apache.cassandra.db.memtable.SkipListMemtable.MemtableUnfilteredPartitionIteratorpartitionIterator(ColumnFilter columnFilter, DataRange dataRange, SSTableReadsListener readsListener) Returns a partition iterator for the given data range.longput(PartitionUpdate update, UpdateTransaction indexer, OpOrder.Group opGroup) Should only be called by ColumnFamilyStore.apply via Keyspace.apply, which supplies the appropriate OpOrdering.rowIterator(DecoratedKey key) rowIterator(DecoratedKey key, Slices slices, ColumnFilter selectedColumns, boolean reversed, SSTableReadsListener listener) Returns a row iterator for the given partition, applying the specified row and column filters.Methods inherited from class org.apache.cassandra.db.memtable.AbstractAllocatorMemtable
addMemoryUsageTo, createMemtableAllocatorPoolInternal, discard, flushLargestMemtable, getAllocator, localRangesUpdated, markExtraOffHeapUsed, markExtraOnHeapUsed, metadataUpdated, performSnapshot, shouldSwitch, switchOut, toStringMethods inherited from class org.apache.cassandra.db.memtable.AbstractMemtableWithCommitlog
accepts, getApproximateCommitLogLowerBound, getCommitLogLowerBound, getFinalCommitLogUpperBound, mayContainDataBeforeMethods inherited from class org.apache.cassandra.db.memtable.AbstractMemtable
getFlushTransaction, getMinLocalDeletionTime, getMinTimestamp, metadata, operationCount, setFlushTransaction, updateMin, updateMinMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.cassandra.db.CellSourceIdentifier
isEqualSource
-
Field Details
-
FACTORY
-
ROW_OVERHEAD_HEAP_SIZE
protected static final int ROW_OVERHEAD_HEAP_SIZE
-
-
Constructor Details
-
SkipListMemtable
protected SkipListMemtable(AtomicReference<CommitLogPosition> commitLogLowerBound, TableMetadataRef metadataRef, Memtable.Owner owner)
-
-
Method Details
-
isClean
public boolean isClean()Description copied from interface:MemtableTrue if the memtable contains no data -
put
Should only be called by ColumnFamilyStore.apply via Keyspace.apply, which supplies the appropriate OpOrdering. commitLogSegmentPosition should only be null if this is a secondary index, in which case it is *expected* to be null- Parameters:
update- the partition update, may be a new partition or an update to an existing oneindexer- receives information about the update's effectopGroup- write operation group, used to permit the operation to complete if it is needed to complete a flush to free space.- Returns:
- the smallest timestamp delta between corresponding rows from existing and update. A
timestamp delta being computed as the difference between the cells and DeletionTimes from any existing partition
and those in
update. See CASSANDRA-7979.
-
partitionCount
public long partitionCount()Description copied from interface:MemtableNumber of partitions stored in the memtable -
partitionIterator
public org.apache.cassandra.db.memtable.SkipListMemtable.MemtableUnfilteredPartitionIterator partitionIterator(ColumnFilter columnFilter, DataRange dataRange, SSTableReadsListener readsListener) Description copied from interface:UnfilteredSourceReturns a partition iterator for the given data range.- Parameters:
columnFilter- filter to apply to all returned partitionsdataRange- the partition and clustering range queriedreadsListener- a listener used to handle internal read events
-
rowIterator
public UnfilteredRowIterator rowIterator(DecoratedKey key, Slices slices, ColumnFilter selectedColumns, boolean reversed, SSTableReadsListener listener) Description copied from interface:UnfilteredSourceReturns a row iterator for the given partition, applying the specified row and column filters.- Parameters:
key- the partition keyslices- the row ranges to returnselectedColumns- filter to apply to all returned partitionsreversed- true if the content should be returned in reverse orderlistener- a listener used to handle internal read events
-
rowIterator
-
getFlushSet
Description copied from interface:MemtableGet the collection of data between the given partition boundaries in a form suitable for flushing. -
getLiveDataSize
public long getLiveDataSize()Description copied from interface:MemtableSize of the data not accounting for any metadata / mapping overheads -
makeUnflushable
public void makeUnflushable()For testing only. Give this memtable too big a size to make it always fail flushing.
-