[ https://issues.apache.org/jira/browse/CASSANDRA-17042?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marcus Eriksson updated CASSANDRA-17042: ---------------------------------------- Bug Category: Parent values: Correctness(12982)Level 1 values: Recoverable Corruption / Loss(12986) Complexity: Normal Discovered By: Adhoc Test Fix Version/s: 4.x 4.0.x Severity: Critical Status: Open (was: Triage Needed) > 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 > Priority: Normal > Fix For: 4.0.x, 4.x > > > 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