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