Cassandra SSTable format incompatibility during binary downgrade
24K reputation · 22 Nov 2020, 01:43 UTC
Apache Cassandra supports rolling upgrades where nodes are updated to a newer binary version. While newer versions can typically read older SSTable formats, forward compatibility is limited. Once a node performs compaction or uses the sstableupgrade tool, the data is rewritten into the newer version's format.
In a scenario where a binary downgrade is required after an upgrade has been partially completed, the presence of these rewritten SSTables prevents the older binary from accessing the data. This creates a dependency on snapshot restoration to avoid data loss.
Given these constraints, what is the precise behavior of the system when a downgraded binary encounters an SSTable format version higher than its own? Can the system identify which specific files are incompatible without attempting to load them?