apache/cassandra · error · NoSuchFileException

Index summary component of sstable

Error message

Index summary component of sstable 

What it means

Raised (as NoSuchFileException) when the Summary component file for an SSTable cannot be loaded during verification — IndexSummaryComponent.load returned null, meaning the summary file is missing or unreadable/unparseable. The verifier treats a missing summary as a hard verification failure.

Source

Thrown at src/java/org/apache/cassandra/io/sstable/format/big/BigTableVerifier.java:208

                             duplicateRows,
                             keyString, first.clustering().toString(sstable.metadata()),
                             sstable.metadata().keyspace,
                             sstable.metadata().name,
                             sstable,
                             dateString(firstMinTs), dateString(firstMaxTs),
                             dateString(minTimestamp), dateString(maxTimestamp), minTimestamp == maxTimestamp);
    }

    private String dateString(long time)
    {
        return Instant.ofEpochMilli(TimeUnit.MICROSECONDS.toMillis(time)).toString();
    }

    private void deserializeIndexSummary(SSTableReader sstable) throws IOException
    {
        IndexSummaryComponent summaryComponent = IndexSummaryComponent.load(sstable.descriptor.fileFor(Components.SUMMARY), cfs.metadata());
        if (summaryComponent == null)
            throw new NoSuchFileException("Index summary component of sstable " + sstable.descriptor + " is missing");
        FileUtils.closeQuietly(summaryComponent.indexSummary);
    }
}

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Restore the Summary.db file from backup or run `nodetool scrub` (rebuilds summaries), or `sstablescrub`
  2. Delete the broken SSTable and repair the range from replicas
  3. Rebuild summaries via `sstablemetadata`/offline tools or restart with summary rebuild on load
Defensive patterns

Strategy: try-catch

Validate before calling

File summary = descriptor.fileFor(Components.SUMMARY);
if (summary == null || !summary.exists()) {
    // regenerate via scrub or restore from snapshot before loading
}

Try / catch

try { component = IndexSummaryComponent.load(file, metadata); }
catch (NoSuchFileException e) { logger.warn("Missing Summary.db for {}", descriptor); regenerateSummary(descriptor); }

Prevention

When it happens

Trigger: `nodetool verify` on an SSTable descriptor whose SUMMARY component (Summary.db) file is absent or unreadable, e.g. incomplete copy of SSTable files or deleted file.

Common situations: Manually copying only Data.db/Index.db; cleanup scripts deleting 'extra' files; crash during summary rebuild; wrong permissions.

Understand the failure class

Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/c5c0318679165b81. Report an issue: GitHub.