apache/cassandra · error · IllegalStateException
Stream Session & SSTable
Error message
Stream Session & SSTable (%s) pendingRepair UUID mismatch.
What it means
In CassandraEntireSSTableStreamReader's constructor, the pendingRepair UUID on the stream message header does not match the session's pendingRepair ID. Entire-SSTable streaming of an incremental-repair session requires exact match; mismatch means stale or misrouted stream data, so construction fails before reading.
Solutions
- Verify pendingRepair IDs on sender and receiver match; restart the stream with consistent repair state
- Abort the incremental repair session that produced the mismatch and re-run the repair
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/java/org/apache/cassandra/db/streaming/CassandraEntireSSTableStreamReader.java:74 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/b1a88af76fe8320c.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/db/streaming/CassandraEntireSSTableStreamReader.java:74
* CassandraEntireSSTableStreamReader reads SSTable off the wire and writes it to disk.
*/
public class CassandraEntireSSTableStreamReader implements IStreamReader
{
private static final Logger logger = LoggerFactory.getLogger(CassandraEntireSSTableStreamReader.class);
private final TableId tableId;
private final StreamSession session;
private final StreamMessageHeader messageHeader;
private final CassandraStreamHeader header;
private final int fileSequenceNumber;
public CassandraEntireSSTableStreamReader(StreamMessageHeader messageHeader, CassandraStreamHeader streamHeader, StreamSession session)
{
if (session.getPendingRepair() != null)
{
// we should only ever be streaming pending repair sstables if the session has a pending repair id
if (!session.getPendingRepair().equals(messageHeader.pendingRepair))
throw new IllegalStateException(format("Stream Session & SSTable (%s) pendingRepair UUID mismatch.", messageHeader.tableId));
}
this.header = streamHeader;
this.session = session;
this.messageHeader = messageHeader;
this.tableId = messageHeader.tableId;
this.fileSequenceNumber = messageHeader.sequenceNumber;
}
/**
* @param in where this reads data from
* @return SSTable transferred
* @throws IOException if reading the remote sstable fails. Will throw an RTE if local write fails.
*/
@Override
public SSTableMultiWriter read(DataInputPlus in) throws IOException
{
ColumnFamilyStore cfs = ColumnFamilyStore.getIfExists(tableId);View on GitHub (pinned to 88fd0f6a0e)