[
https://issues.apache.org/jira/browse/CASSANDRA-21092?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paulo Motta updated CASSANDRA-21092:
------------------------------------
Reviewers: Stefan Miklosovic
> Automatically disable zero-copy streaming for legacy sstables
> -------------------------------------------------------------
>
> Key: CASSANDRA-21092
> URL: https://issues.apache.org/jira/browse/CASSANDRA-21092
> Project: Apache Cassandra
> Issue Type: Bug
> Components: Tool/sstable
> Reporter: Paulo Motta
> Assignee: Paulo Motta
> Priority: Normal
> Time Spent: 20m
> Remaining Estimate: 0h
>
> When attempting to load legacy Cassandra 3.11 sstables into a Cassandra 5.0+
> cluster using sstableloader, the operation fails with a StreamException when
> zero-copy streaming is enabled (which is the default behavior). The root
> cause is an assertion error {{java.lang.AssertionError: Filter should not be
> serialized in old format at
> org.apache.cassandra.utils.BloomFilter.serialize(BloomFilter.java:67)}} that
> was introduced by CASSANDRA-17056 when it landed in the 5.0 branch.
> This is a regression from Cassandra 4.0 and 4.1, where zero-copy streaming
> works fine with legacy sstables. The changes in 5.0 introduced stricter
> validation that rejects the old bloom filter serialization format used in 3.x
> sstables, causing the streaming operation to fail.
> This patch automatically detects sstables with the old bloom filter format
> (pre-4.0) by checking descriptor.version.hasOldBfFormat() in
> CassandraOutgoingFile.computeShouldStreamEntireSSTables() and falls back to
> legacy streaming for those sstables. No user intervention required.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]