in hbase-coprocessor/src/main/java/org/apache/omid/transaction/TransactionVisibilityFilterBase.java [75:121]
public ReturnCode filterCell(Cell v) throws IOException {
if (CellUtils.isShadowCell(v)) {
Long commitTs = Bytes.toLong(CellUtil.cloneValue(v));
commitCache.put(v.getTimestamp(), commitTs);
// Continue getting shadow cells until one of them fits this transaction
if (hbaseTransaction.getStartTimestamp() >= commitTs) {
return ReturnCode.NEXT_COL;
} else {
return ReturnCode.SKIP;
}
}
Optional<Long> commitTS = getCommitIfInSnapshot(v, CellUtils.isFamilyDeleteCell(v));
if (commitTS.isPresent()) {
if (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL &&
snapshotFilter.getTSIfInTransaction(v, hbaseTransaction).isPresent()) {
return runUserFilter(v, ReturnCode.INCLUDE);
}
if (CellUtils.isFamilyDeleteCell(v)) {
familyDeletionCache.put(createImmutableBytesWritable(v), commitTS.get());
if (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL) {
return runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
} else {
return ReturnCode.NEXT_COL;
}
}
Long deleteCommit = familyDeletionCache.get(createImmutableBytesWritable(v));
if (deleteCommit != null && deleteCommit >= v.getTimestamp()) {
if (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL) {
return runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
} else {
return ReturnCode.NEXT_COL;
}
}
if (CellUtils.isTombstone(v)) {
if (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL) {
return runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
} else {
return ReturnCode.NEXT_COL;
}
}
return runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
}
return ReturnCode.SKIP;
}