You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Aleksey Yeschenko (JIRA)" <ji...@apache.org> on 2016/01/08 17:24:39 UTC

[jira] [Commented] (CASSANDRA-10940) sstableloader shuold skip streaming SSTable generated in < 3.0.0

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

Aleksey Yeschenko commented on CASSANDRA-10940:
-----------------------------------------------

Is skipping them strictly correct? You'd miss data that's in the older ones this way.

I feel like we should error out - but not with an NPE. Do the check beforehand, and error out if some of the data to be streamed lives in an older sstable.

The error message should also mention the way to fix it: by running upgradesstables.

> sstableloader shuold skip streaming SSTable generated in < 3.0.0
> ----------------------------------------------------------------
>
>                 Key: CASSANDRA-10940
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10940
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Streaming and Messaging, Tools
>            Reporter: Yuki Morishita
>            Assignee: Yuki Morishita
>            Priority: Minor
>             Fix For: 3.0.x, 3.x
>
>
> Since 3.0.0, [streaming does not support SSTable from version less than 3.0.0|https://github.com/apache/cassandra/blob/0f5e780781ce3f0cb3732515dacc7e467571a7c9/src/java/org/apache/cassandra/io/sstable/SSTableSimpleIterator.java#L116].
> {{sstableloader}} should skip those files to be streamed, instead of erroring out like below:
> {code}
> Failed to list files in /home/yuki/.ccm/2.1.11/node1/data/keyspace1/standard1-5242ae50a9b311e585b29dc952593398
> java.lang.NullPointerException
> java.lang.RuntimeException: Failed to list files in /home/yuki/.ccm/2.1.11/node1/data/keyspace1/standard1-5242ae50a9b311e585b29dc952593398
>         at org.apache.cassandra.db.lifecycle.LogAwareFileLister.list(LogAwareFileLister.java:53)
>         at org.apache.cassandra.db.lifecycle.LifecycleTransaction.getFiles(LifecycleTransaction.java:544)
>         at org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:76)
>         at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:165)
>         at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:101)
> Caused by: java.lang.NullPointerException
>         at org.apache.cassandra.io.sstable.format.SSTableReader.openForBatch(SSTableReader.java:421)
>         at org.apache.cassandra.io.sstable.SSTableLoader.lambda$openSSTables$186(SSTableLoader.java:121)
>         at org.apache.cassandra.io.sstable.SSTableLoader$$Lambda$18/712974096.apply(Unknown Source)
>         at org.apache.cassandra.db.lifecycle.LogAwareFileLister.lambda$innerList$178(LogAwareFileLister.java:75)
>         at org.apache.cassandra.db.lifecycle.LogAwareFileLister$$Lambda$29/1191654595.test(Unknown Source)
>         at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
>         at java.util.TreeMap$EntrySpliterator.forEachRemaining(TreeMap.java:2965)
>         at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
>         at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
>         at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
>         at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>         at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
>         at org.apache.cassandra.db.lifecycle.LogAwareFileLister.innerList(LogAwareFileLister.java:77)
>         at org.apache.cassandra.db.lifecycle.LogAwareFileLister.list(LogAwareFileLister.java:49)
>         ... 4 more
> {code}



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