in cassandra-analytics-core/src/main/java/org/apache/cassandra/spark/data/CassandraDataLayer.java [537:587]
private List<SSTable> collectSSTableList(SidecarInstance sidecarInstance,
ListSnapshotFilesResponse response,
int partitionId)
{
if (response == null)
{
throw new IncompleteSSTableException();
}
List<ListSnapshotFilesResponse.FileInfo> snapshotFilesInfo = response.snapshotFilesInfo();
if (snapshotFilesInfo == null)
{
throw new IncompleteSSTableException();
}
// Group SSTable components together
Map<String, Map<FileType, ListSnapshotFilesResponse.FileInfo>> result = new LinkedHashMap<>(1024);
for (ListSnapshotFilesResponse.FileInfo file : snapshotFilesInfo)
{
String fileName = file.fileName;
int lastIndexOfDash = fileName.lastIndexOf('-');
if (lastIndexOfDash < 0)
{
// E.g. dd manifest.json file
continue;
}
String ssTableName = fileName.substring(0, lastIndexOfDash);
try
{
FileType fileType = FileType.fromExtension(fileName.substring(lastIndexOfDash + 1));
result.computeIfAbsent(ssTableName, k -> new LinkedHashMap<>())
.put(fileType, file);
}
catch (IllegalArgumentException ignore)
{
// Ignore unknown SSTable component types
}
}
// Map to SSTable
return result.values().stream()
.map(components -> new SidecarProvisionedSSTable(sidecar,
sidecarClientConfig,
sidecarInstance,
keyspace,
table,
snapshotName,
components,
partitionId,
stats()))
.collect(Collectors.toList());
}