You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Marcus Eriksson (Jira)" <ji...@apache.org> on 2021/10/14 08:03:00 UTC

[jira] [Updated] (CASSANDRA-17042) Avoid sstable corruption when upgrading from 4.0-rc1 to 4.0.0

     [ 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-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org