Fix the ordering of sstables when running sstableupgrade tool

patch by Claude Warren; reviewed by Jacek Lewandowski and Stefan Miklosovic for CASSANDRA-18143
This commit is contained in:
Claude Warren 2023-03-14 09:24:25 +01:00 committed by Jacek Lewandowski
parent 02048cffea
commit 8df69c8016
3 changed files with 15 additions and 2 deletions

View File

@ -1,4 +1,5 @@
3.0.29
* Fix the ordering of sstables when running sstableupgrade tool (CASSANDRA-18143)
* Fix default file system error handler for disk_failure_policy die (CASSANDRA-18294)
* Introduce check for names of test classes (CASSANDRA-17964)
* Suppress CVE-2022-41915 (CASSANDRA-18147)

View File

@ -671,6 +671,18 @@ public class Directories
return ImmutableMap.copyOf(components);
}
/**
* Returns a sorted version of the {@code list} method.
* Descriptors are sorted by generation.
* @return a List of descriptors to their components.
*/
public List<Map.Entry<Descriptor, Set<Component>>> sortedList()
{
List<Map.Entry<Descriptor, Set<Component>>> sortedEntries = new ArrayList<>(list().entrySet());
sortedEntries.sort(Comparator.comparingInt(e -> e.getKey().generation));
return sortedEntries;
}
public List<File> listFiles()
{
filter();

View File

@ -72,8 +72,8 @@ public class StandaloneUpgrader
Collection<SSTableReader> readers = new ArrayList<>();
// Upgrade sstables
for (Map.Entry<Descriptor, Set<Component>> entry : lister.list().entrySet())
// Upgrade sstables in id order
for (Map.Entry<Descriptor, Set<Component>> entry : lister.sortedList())
{
Set<Component> components = entry.getValue();
if (!components.contains(Component.DATA) || !components.contains(Component.PRIMARY_INDEX))