public abstract class Cells
extends java.lang.Object
Modifier and Type | Method and Description |
---|---|
static void |
collectStats(Cell cell,
PartitionStatisticsCollector collector)
Collect statistics ont a given cell.
|
static Cell |
reconcile(Cell c1,
Cell c2,
int nowInSec)
Reconciles/merge two cells.
|
static long |
reconcile(Clustering clustering,
Cell existing,
Cell update,
DeletionTime deletion,
Row.Builder builder,
int nowInSec,
SecondaryIndexManager.Updater indexUpdater)
Reconciles/merges two cells, one being an update to an existing cell,
yielding index updates if appropriate.
|
static long |
reconcileComplex(Clustering clustering,
ColumnDefinition column,
java.util.Iterator<Cell> existing,
java.util.Iterator<Cell> update,
DeletionTime deletion,
Row.Builder builder,
int nowInSec,
SecondaryIndexManager.Updater indexUpdater)
Computes the reconciliation of a complex column given its pre-existing
cells and the ones it is updated with, and generating index update if
appropriate.
|
public static void collectStats(Cell cell, PartitionStatisticsCollector collector)
cell
- the cell for which to collect stats.collector
- the stats collector.public static long reconcile(Clustering clustering, Cell existing, Cell update, DeletionTime deletion, Row.Builder builder, int nowInSec, SecondaryIndexManager.Updater indexUpdater)
Note that this method assumes that the provided cells can meaningfully be reconciled together, that is that those cells are for the same row and same column (and same cell path if the column is complex).
Also note that which cell is provided as existing
and which is
provided as update
matters for index updates.
clustering
- the clustering for the row the cells to merge originate from.
This is only used for index updates, so this can be null
if
indexUpdater == SecondaryIndexManager.nullUpdater
.existing
- the pre-existing cell, the one that is updated. This can be
null
if this reconciliation correspond to an insertion.update
- the newly added cell, the update. This can be null
out
of convenience, in which case this function simply copy existing
to
writer
.deletion
- the deletion time that applies to the cells being considered.
This deletion time may delete both existing
or update
.builder
- the row builder to which the result of the reconciliation is written.nowInSec
- the current time in seconds (which plays a role during reconciliation
because deleted cells always have precedence on timestamp equality and deciding if a
cell is a live or not depends on the current time due to expiring cells).indexUpdater
- an index updater to which the result of the reconciliation is
signaled (if relevant, that is if the update is not simply ignored by the reconciliation).
This cannot be null
but SecondaryIndexManager.nullUpdater
can be passed.Long.MAX_VALUE
if one
of them is null
or deleted by deletion
).public static Cell reconcile(Cell c1, Cell c2, int nowInSec)
Note that this method assumes that the provided cells can meaningfully be reconciled together, that is that cell are for the same row and same column (and same cell path if the column is complex).
This method is commutative over it's cells arguments: reconcile(a, b, n) == reconcile(b, a, n)
.
c1
- the first cell participating in the reconciliation.c2
- the second cell participating in the reconciliation.nowInSec
- the current time in seconds (which plays a role during reconciliation
because deleted cells always have precedence on timestamp equality and deciding if a
cell is a live or not depends on the current time due to expiring cells).c1
and c2
.
For non-counter cells, this will always be either c1
or c2
, but for
counter cells this can be a newly allocated cell.public static long reconcileComplex(Clustering clustering, ColumnDefinition column, java.util.Iterator<Cell> existing, java.util.Iterator<Cell> update, DeletionTime deletion, Row.Builder builder, int nowInSec, SecondaryIndexManager.Updater indexUpdater)
Note that this method assumes that the provided cells can meaningfully be reconciled together, that is that the cells are for the same row and same complex column.
Also note that which cells is provided as existing
and which are
provided as update
matters for index updates.
clustering
- the clustering for the row the cells to merge originate from.
This is only used for index updates, so this can be null
if
indexUpdater == SecondaryIndexManager.nullUpdater
.column
- the complex column the cells are for.existing
- the pre-existing cells, the ones that are updated. This can be
null
if this reconciliation correspond to an insertion.update
- the newly added cells, the update. This can be null
out
of convenience, in which case this function simply copy the cells from
existing
to writer
.deletion
- the deletion time that applies to the cells being considered.
This deletion time may delete cells in both existing
and update
.builder
- the row build to which the result of the reconciliation is written.nowInSec
- the current time in seconds (which plays a role during reconciliation
because deleted cells always have precedence on timestamp equality and deciding if a
cell is a live or not depends on the current time due to expiring cells).indexUpdater
- an index updater to which the result of the reconciliation is
signaled (if relevant, that is if the updates are not simply ignored by the reconciliation).
This cannot be null
but SecondaryIndexManager.nullUpdater
can be passed.update
and the
cell in existing
having the same cell path (if such cell exists). If the intersection
of cells from existing
and update
having the same cell path is empty, this
returns Long.MAX_VALUE
.Copyright © 2015 The Apache Software Foundation