You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Benedict (JIRA)" <ji...@apache.org> on 2014/12/11 18:45:13 UTC

[jira] [Comment Edited] (CASSANDRA-8458) Avoid streaming from tmplink files

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

Benedict edited comment on CASSANDRA-8458 at 12/11/14 5:45 PM:
---------------------------------------------------------------

We could also try and figure out how/why this happens, as it should be able to stream safely.

Does it only happen if streaming a range that wraps zero (i.e. from +X, to -Y)? 

edit: To elaborate, I suspect the broken bit is that our dfile/ifile objects don't actually truncate the readable range - only our indexed decoratedkey range is truncated. In sstable.getPositionsForRanges we just return the end of the file if the range goes past the range of the file; in this case we could stream partially written data. If so, we could fix by simply making sstable.getPositionsForRanges() lookup the start position of the last key in the file, and always ensure we leave a key's overlap between the dropped sstables and the replacement.


was (Author: benedict):
We could also try and figure out how/why this happens, as it should be able to stream safely.

Does it only happen if streaming a range that wraps zero (i.e. from +X, to -Y)?

> Avoid streaming from tmplink files
> ----------------------------------
>
>                 Key: CASSANDRA-8458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8458
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Marcus Eriksson
>            Assignee: Marcus Eriksson
>             Fix For: 2.1.3
>
>
> Looks like we include tmplink sstables in streams in 2.1+, and when we do, sometimes we get this error message on the receiving side: {{java.io.IOException: Corrupt input data, block did not start with 2 byte signature ('ZV') followed by type byte, 2-byte length)}}. I've only seen this happen when a tmplink sstable is included in the stream.
> We can not just exclude the tmplink files when starting the stream - we need to include the original file, which we might miss since we check if the requested stream range intersects the sstable range.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)