org.apache.cassandra.db.compaction
Class LazilyCompactedRow
java.lang.Object
org.apache.cassandra.db.compaction.AbstractCompactedRow
org.apache.cassandra.db.compaction.LazilyCompactedRow
- All Implemented Interfaces:
- java.lang.Iterable<IColumn>, IIterableColumns
public class LazilyCompactedRow
- extends AbstractCompactedRow
- implements IIterableColumns
LazilyCompactedRow only computes the row bloom filter and column index in memory
(at construction time); it does this by reading one column at a time from each
of the rows being compacted, and merging them as it does so. So the most we have
in memory at a time is the bloom filter, the index, and one column from each
pre-compaction row.
When write() or update() is called, a second pass is made over the pre-compaction
rows to write the merged columns or update the hash, again with at most one column
from each row deserialized at a time.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
LazilyCompactedRow
public LazilyCompactedRow(CompactionController controller,
java.util.List<? extends ICountableColumnIterator> rows)
write
public long write(java.io.DataOutput out)
throws java.io.IOException
- Description copied from class:
AbstractCompactedRow
- write the row (size + column index + filter + column data, but NOT row key) to @param out.
It is an error to call this if isEmpty is false. (Because the key is appended first,
so we'd have an incomplete row written.)
write() may change internal state; it is NOT valid to call write() or update() a second time.
- Specified by:
write
in class AbstractCompactedRow
- Throws:
java.io.IOException
update
public void update(java.security.MessageDigest digest)
- Description copied from class:
AbstractCompactedRow
- update @param digest with the data bytes of the row (not including row key or row size).
May be called even if empty.
update() may change internal state; it is NOT valid to call write() or update() a second time.
- Specified by:
update
in class AbstractCompactedRow
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in class AbstractCompactedRow
- Returns:
- true if there are no columns in the row AND there are no row-level tombstones to be preserved
getEstimatedColumnCount
public int getEstimatedColumnCount()
- Specified by:
getEstimatedColumnCount
in interface IIterableColumns
getComparator
public AbstractType getComparator()
- Specified by:
getComparator
in interface IIterableColumns
iterator
public java.util.Iterator<IColumn> iterator()
- Specified by:
iterator
in interface java.lang.Iterable<IColumn>
columnCount
public int columnCount()
- Specified by:
columnCount
in class AbstractCompactedRow
- Returns:
- the number of columns in the row
maxTimestamp
public long maxTimestamp()
- Specified by:
maxTimestamp
in class AbstractCompactedRow
- Returns:
- the max column timestamp in the row or Long.MIN_VALUE if
computing this value would require extra effort we're not willing to
make.
Copyright © 2011 The Apache Software Foundation