apache/cassandra · error · IOException
Cannot deserialize index summary from %s
Error message
Cannot deserialize index summary from %s
What it means
Thrown when the index summary (Summary.db) exists but cannot be deserialized — an IOException occurred while reading its header or contents. The wrapping preserves the underlying cause; the summary component is corrupt.
Source
Thrown at src/java/org/apache/cassandra/io/sstable/format/big/IndexSummaryComponent.java:98
IndexSummary summary = null;
try (FileInputStreamPlus iStream = summaryFile.newInputStream())
{
summary = IndexSummary.serializer.deserialize(iStream,
metadata.partitioner,
metadata.params.minIndexInterval,
metadata.params.maxIndexInterval);
DecoratedKey first = metadata.partitioner.decorateKey(ByteBufferUtil.readWithLength(iStream));
DecoratedKey last = metadata.partitioner.decorateKey(ByteBufferUtil.readWithLength(iStream));
return new IndexSummaryComponent(summary, first, last);
}
catch (IOException ex)
{
if (summary != null)
summary.close();
throw new IOException(String.format("Cannot deserialize index summary from %s", summaryFile), ex);
}
}
public static IndexSummaryComponent loadOrDeleteCorrupted(File summaryFile, TableMetadata metadata) throws IOException
{
try
{
return load(summaryFile, metadata);
}
catch (IOException ex)
{
summaryFile.deleteIfExists();
throw ex;
}
}
/**
* Save index summary to Summary.db file.View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Regenerate the summary via `nodetool scrub` / sstablescrub or delete the SSTable and repair from replicas
- Check the underlying cause in the exception chain (truncation vs format mismatch) and the SSTable format version compatibility
- Restore Summary.db from backup
Defensive patterns
Strategy: try-catch
Try / catch
try { component = IndexSummaryComponent.load(file, metadata); }
catch (IOException e) {
logger.warn("Corrupt summary for {}: {}", file, e.getCause());
rebuildOrRepair(descriptor);
} Prevention
- Keep SSTable format versions consistent across upgrades (finish upgrades before restores)
- Check for disk bit rot
- Restore only complete, verified file sets
When it happens
Trigger: Loading an SSTable whose Summary.db has invalid magic/version/header or truncated content, via IndexSummaryComponent.load (e.g. during verify or loadOrDeleteCorrupted paths).
Common situations: Bit rot or partial write of Summary.db; version mismatch (SSTable from a different Cassandra version); manual edits; crash during summary save.
Understand the failure class
Background: "failed to unmarshal" / json.Unmarshal errors: why parsing a response into a Go struct fails and how to fix it — this error's family across 23 libraries.
Related errors
- Corrupt flags value for clustering prefix (isStatic flag set
- Clustering block upper bits (those not associated with keys)
- Corrupt (negative) clustering value length encountered: ${le
- Corrupt clustering value length %d encountered, as it exceed
- CorruptSSTableException (wrapped corruption: IndexOutOfBound
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/3a74e2b0c312fa91.
Report an issue: GitHub.