[ 
https://issues.apache.org/jira/browse/CASSANDRA-286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12729295#action_12729295
 ] 

Jun Rao commented on CASSANDRA-286:
-----------------------------------

This is a problem with any APIs relying on offset, instead of value. All 
columns before the offset affect the outcome. So, if there is any incorrect 
column (whether it's missing deletes or missing inserts) before the offset 
doesn't get fixed immediately, the outcome will be incorrect.

One potential fix is to include all columns before offset in the repair logic, 
but not in thrift return. This won't affect performance much since we already 
have to scan those columns. This may complicates the overall logic a bit though.
 

> slice offset breaks read repair
> -------------------------------
>
>                 Key: CASSANDRA-286
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-286
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Jonathan Ellis
>
> [code]
>         int liveColumns = 0;
>         int limit = offset + count;
>         for (IColumn column : reducedColumns)
>         {
>             if (liveColumns >= limit)
>                 break;
>             if (!finish.isEmpty()
>                 && ((isAscending && column.name().compareTo(finish) > 0))
>                     || (!isAscending && column.name().compareTo(finish) < 0))
>                 break;
>             if (!column.isMarkedForDelete())
>                 liveColumns++;
>             if (liveColumns > offset)
>                 returnCF.addColumn(column);
>         }
> [code]
> The problem is that for offset to return the correct "live" columns, it has 
> to ignore tombstones it scans before the first live one post-offset.
> This means that instead of being corrected within a few ms of a read, a node 
> can continue returning deleted data indefinitely (until the next anti-entropy 
> pass).
> Coupled with offset's inherent inefficiency (see CASSANDRA-261) I think this 
> means we should take it out and leave offset to be computed client-side 
> (which, for datasets under which it was reasonable server-side, will still be 
> reasonable).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to