[
https://issues.apache.org/jira/browse/CASSANDRA-10990?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15110707#comment-15110707
]
Sylvain Lebresne commented on CASSANDRA-10990:
----------------------------------------------
The problem will be compact tables. With them, old nodes have their cells for
declared columns intermingled with other cells and we need to get all the
former ones first for the new format (as they become static columns). When
reading old sstables, we end up having to sometimes double read partitions
during compaction (thankfully it's only for some tables and it's a one time
thing) and do some tricks for reads (which are too long to explain here but one
can look at {{ThriftResultsMerger}} if interested).
Anyway, we can't easily do this for streaming. The only viable solution I can
see would be to first write all the "dynamic" cells to some temporary location
collecting the "static" ones while doing it, then writing the static ones and
then copying back the dynamic ones. Doable, though it's getting complicated.
I also want to note that streaming sstables is in itself useless. What we care
is the features that use streaming, i.e. bootstrap, moving and repair. And at
least for repair, this won't work out of the box because 3.0 don't compute the
same digest than 2.X nodes. Now, 3.0 nodes are actually able to compute the 2.X
ones (which we use for digest queries), but we need to add the code so they
pick the right version to compute. As for bootstrap/moving, they "should" work
out of the box in mixed cluster (providing streaming works) but we've changed
enough in 3.0, including with schemas, that we need a good battery of tests
before claiming it does.
So anyway, we can likely solve all those problems, but it's worth noting that
this ticket is probably a rather big one if you include the testing necessary
(and I think it's better to say "sorry but you can't do streaming based
operations during upgrade" than pretending it works but having it break easily
in practice).
> Support streaming of older version sstables in 3.0
> --------------------------------------------------
>
> Key: CASSANDRA-10990
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10990
> Project: Cassandra
> Issue Type: Bug
> Components: Streaming and Messaging
> Reporter: Jeremy Hanna
> Assignee: Paulo Motta
>
> In 2.0 we introduced support for streaming older versioned sstables
> (CASSANDRA-5772). In 3.0, because of the rewrite of the storage layer, this
> became no longer supported. So currently, while 3.0 can read sstables in the
> 2.1/2.2 format, it cannot stream the older versioned sstables. We should do
> some work to make this still possible to be consistent with what
> CASSANDRA-5772 provided.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)