Class RowIteratorMergeListener<E extends Endpoints<E>>
- java.lang.Object
-
- org.apache.cassandra.service.reads.repair.RowIteratorMergeListener<E>
-
- All Implemented Interfaces:
UnfilteredRowIterators.MergeListener
public class RowIteratorMergeListener<E extends Endpoints<E>> extends java.lang.Object implements UnfilteredRowIterators.MergeListener
-
-
Field Summary
-
Fields inherited from interface org.apache.cassandra.db.rows.UnfilteredRowIterators.MergeListener
NOOP
-
-
Constructor Summary
Constructors Constructor Description RowIteratorMergeListener(DecoratedKey partitionKey, RegularAndStaticColumns columns, boolean isReversed, ReplicaPlan.ForRead<E> readPlan, ReadCommand command, ReadRepair readRepair)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
onMergedPartitionLevelDeletion(DeletionTime mergedDeletion, DeletionTime[] versions)
Called once for the merged partition.void
onMergedRangeTombstoneMarkers(RangeTombstoneMarker merged, RangeTombstoneMarker[] versions)
Called once for every range tombstone marker participating in the merge.Row
onMergedRows(Row merged, Row[] versions)
Called once for every row participating in the merge.
-
-
-
Constructor Detail
-
RowIteratorMergeListener
public RowIteratorMergeListener(DecoratedKey partitionKey, RegularAndStaticColumns columns, boolean isReversed, ReplicaPlan.ForRead<E> readPlan, ReadCommand command, ReadRepair readRepair)
-
-
Method Detail
-
onMergedPartitionLevelDeletion
public void onMergedPartitionLevelDeletion(DeletionTime mergedDeletion, DeletionTime[] versions)
Description copied from interface:UnfilteredRowIterators.MergeListener
Called once for the merged partition.- Specified by:
onMergedPartitionLevelDeletion
in interfaceUnfilteredRowIterators.MergeListener
- Parameters:
mergedDeletion
- the partition level deletion for the merged partition. Implementors can test if the merged partition actually has a partition level deletion or not by callingmergedDeletion.isLive()
.versions
- the partition level deletion for the sources of the merge. Elements of the array will never be null, but be "live".
-
onMergedRows
public Row onMergedRows(Row merged, Row[] versions)
Description copied from interface:UnfilteredRowIterators.MergeListener
Called once for every row participating in the merge.Note that this is called for every clustering where at least one of the source merged has a row. In particular, this may be called in cases where there is no row in the merged output (if a source has a row that is shadowed by another source range tombstone or partition level deletion).
- Specified by:
onMergedRows
in interfaceUnfilteredRowIterators.MergeListener
- Parameters:
merged
- the result of the merge. This cannot benull
(so that listener can always access the clustering from this safely)but can be empty, in which case this is a placeholder for when at least one source has a row, but that row is shadowed in the merged output.versions
- for each source, the row in that source corresponding tomerged
. This can benull
for some sources if the source has not such row.- Returns:
- the row to use as result of the merge (can be
null
). Most implementations should simply returnmerged
, but this allows some implementations to impact the merge result if necessary. If this returns eithernull
or an empty row, then the row is skipped from the merge result. If this returns a nonnull
result, then the returned row must have the same clustering thanmerged
.
-
onMergedRangeTombstoneMarkers
public void onMergedRangeTombstoneMarkers(RangeTombstoneMarker merged, RangeTombstoneMarker[] versions)
Description copied from interface:UnfilteredRowIterators.MergeListener
Called once for every range tombstone marker participating in the merge.Note that this is called for every "clustering position" where at least one of the source merged has a range tombstone marker.
- Specified by:
onMergedRangeTombstoneMarkers
in interfaceUnfilteredRowIterators.MergeListener
- Parameters:
merged
- the marker in the merged output. This can benull
if there is no such marker, which means that at least one source has a marker inversions
but the merged out has nothing corresponding (this basically mean the merged output has a currently open deletion that shadows whatever marker the source had).versions
- the marker for each source merged. This can benull
for some source if that source has not such marker.
-
close
public void close()
- Specified by:
close
in interfaceUnfilteredRowIterators.MergeListener
-
-