Could you please create a bug report for this in Jira 
https://issues.apache.org/jira/browse/CASSANDRA

Please check the data directory on the node that encountered the error and 
include any files names that have "tmp" in them. 

Can you also check for log messages on the node you decommissioned at the INFO 
level that start with "Stream context metadata".

it looks like the file version from the old files on the decommissioning node 
are included in the stream header and it's used to create the new temp file on 
the node that got this error. So when the it tries to build the other SSTable 
files from the new data it thinks it's an old data file, even though it's a 
v0.8 file. v0.8 can read v0.7 data files, but it would not expected to see a 
new v0.7 data file.  

If this is the case the only work around I can think of would be to nodetool 
scrub the node before starting decommission as this would write new data files. 
It's a bit late here so I may have missed something.  
 
Thanks for reporting it. 

-----------------
Aaron Morton
Freelance Cassandra Developer
@aaronmorton
http://www.thelastpickle.com

On 3 Jun 2011, at 22:06, Dikang Gu wrote:

> Hi guys,
> 
> I upgrade the 4-nodes cassandra 0.7.4 cluster to 0.8.0.  Then, I do the 
> bin/nodetool decommission on one node, the decommission hangs there and I got 
> the following exceptions on others nodes.
> 
> ERROR [Thread-55] 2011-06-03 18:02:03,500 AbstractCassandraDaemon.java (line 
> 113) Fatal exception in thread Thread[Thread-55,5,main]
> java.lang.RuntimeException: Cannot recover SSTable with version f (current 
> version g).
>       at 
> org.apache.cassandra.io.sstable.SSTableWriter.createBuilder(SSTableWriter.java:240)
>       at 
> org.apache.cassandra.db.CompactionManager.submitSSTableBuild(CompactionManager.java:1088)
>       at 
> org.apache.cassandra.streaming.StreamInSession.finished(StreamInSession.java:108)
>       at 
> org.apache.cassandra.streaming.IncomingStreamReader.readFile(IncomingStreamReader.java:104)
>       at 
> org.apache.cassandra.streaming.IncomingStreamReader.read(IncomingStreamReader.java:61)
>       at 
> org.apache.cassandra.net.IncomingTcpConnection.stream(IncomingTcpConnection.java:155)
>       at 
> org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:93)
> ERROR [Thread-56] 2011-06-03 18:02:04,285 AbstractCassandraDaemon.java (line 
> 113) Fatal exception in thread Thread[Thread-56,5,main]
> java.lang.RuntimeException: Cannot recover SSTable with version f (current 
> version g).
>       at 
> org.apache.cassandra.io.sstable.SSTableWriter.createBuilder(SSTableWriter.java:240)
>       at 
> org.apache.cassandra.db.CompactionManager.submitSSTableBuild(CompactionManager.java:1088)
>       at 
> org.apache.cassandra.streaming.StreamInSession.finished(StreamInSession.java:108)
>       at 
> org.apache.cassandra.streaming.IncomingStreamReader.readFile(IncomingStreamReader.java:104)
>       at 
> org.apache.cassandra.streaming.IncomingStreamReader.read(IncomingStreamReader.java:61)
>       at 
> org.apache.cassandra.net.IncomingTcpConnection.stream(IncomingTcpConnection.java:155)
>       at 
> org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:93)
> 
> Do you have any ideas about this?
> 
> Thanks.
> 
> -- 
> Dikang Gu
> 0086 - 18611140205

Reply via email to