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

Paulo Motta commented on CASSANDRA-8928:
----------------------------------------

After digging into this for a while we realized it may be too much effort to 
support writing full-fledged sstables in previous formats in a dependable way, 
specially after the large scale changes introduced by CASSANDRA-8099. This is 
due to the fact that we not only have to translate the data component, which is 
already a large effort per se, but also make sure other components such as 
indexes, samples, stats, etc, are downgraded correctly, which means a large 
bunch of legacy code that needs to be kept around until it becomes unsupported.

We initially thought this could easily enable CASSANDRA-8110 but it can 
actually be seen as the opposite: once we make streaming backward compatible, 
downgrading is just a matter of sstableloading the new-format sstables in a 
previous-version node, which will already make the sstable be rewritten in the 
old format correctly, since all the components are rewritten during streaming. 
Of course there would be some manual juggling needed to restore the node with 
the correct tokens and schema, but we can probably add some kind of 
recovery/downgrade mode that would allow an operator to reload the data with 
sstableloader before the node becomes available. Maybe this could be made 
easier after CASSANDRA-6038 and/or CASSANDRA-9587.

So my take is that we should pursue CASSANDRA-8110 first, since that seems much 
more attainable, and rethink this later, maybe via recovery mode + 
sstableloading combo as suggested previously. Since streaming basically 
transfer raw sstable partitions over the wire, downgraded stream support is 
just a matter of translating partitions on-the-fly to the previous data format, 
without the need to support downgrading other components extensively as 
required here. With this said, I will attach a design document to 
CASSANDRA-8110 shortly.

> Add downgradesstables
> ---------------------
>
>                 Key: CASSANDRA-8928
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8928
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Tools
>            Reporter: Jeremy Hanna
>            Assignee: Kaide Mu
>            Priority: Minor
>              Labels: gsoc2016, mentor
>
> As mentioned in other places such as CASSANDRA-8047 and in the wild, 
> sometimes you need to go back.  A downgrade sstables utility would be nice 
> for a lot of reasons and I don't know that supporting going back to the 
> previous major version format would be too much code since we already support 
> reading the previous version.



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

Reply via email to