Marcus Eriksson created CASSANDRA-17042: -------------------------------------------
Summary: Avoid sstable corruption when upgrading from 4.0-rc1 to 4.0.0 Key: CASSANDRA-17042 URL: https://issues.apache.org/jira/browse/CASSANDRA-17042 Project: Cassandra Issue Type: Bug Components: Consistency/Streaming, Local/SSTable Reporter: Marcus Eriksson Assignee: Marcus Eriksson 4.0-rc2 introduced a new sstable version ({{-nb-}}), adding a field in {{StatsMetadata}}. When zero copy streaming a file from 4.0-rc2+ to 4.0-rc1, the rc1 node will write it as an {{-nb-}} file, mutate the metadata to clear repairedAt/level information from StatsMetadata and rewrite the file, keeping the same file name. Problem is that since rc1 doesn't know about the new field in StatsMetadata, it will write the file without the new StatsMetadata field, but with an {{-nb-}} filename. Then, when upgrading this node to rc2+ we will try to read it as a {{-nb-}} file, but will get {{EOFException}} since it doesn't contain the new field. We should make sure that we never do zero-copy streaming to nodes that don't know about the file version. The corrupt sstables can be fixed by simply renaming all components of it to {{-na-}} from {{-nb-}} -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org