apache/cassandra · error
Corrupt flags value for unfiltered partition (isStatic flag…
Error message
Corrupt flags value for unfiltered partition (isStatic flag set): %s
What it means
Fired in UnfilteredSerializer.deserializeOne when the flags byte read from disk has the isStatic bit set on a non-first unfiltered of a partition, which the format forbids. It signals byte-stream desynchronization or SSTable corruption and is surfaced as a corruption error while reading the partition.
Solutions
- Check the streaming/compression settings and versions on both endpoints match
- Run repair to re-stream the data; scrub the corrupted file if it is on disk
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at src/java/org/apache/cassandra/db/rows/UnfilteredSerializer.java:495 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/90d19c4efeb02b46.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/db/rows/UnfilteredSerializer.java:495
// It wouldn't be wrong per-se to use an unsorted builder, but it would be inefficient so make sure we don't do it by mistake
assert builder.isSorted();
int flags = in.readUnsignedByte();
if (isEndOfPartition(flags))
return null;
int extendedFlags = readExtendedFlags(in, flags);
if (kind(flags) == Unfiltered.Kind.RANGE_TOMBSTONE_MARKER)
{
ClusteringBoundOrBoundary<byte[]> bound = ClusteringBoundOrBoundary.serializer.deserialize(in, helper.version, header.clusteringTypes());
return deserializeMarkerBody(in, header, bound);
}
else
{
// deserializeStaticRow should be used for that.
if (isStatic(extendedFlags))
throw new IOException("Corrupt flags value for unfiltered partition (isStatic flag set): " + flags);
builder.newRow(Clustering.serializer.deserialize(in, helper.version, header.clusteringTypes()));
return deserializeRowBody(in, header, helper, flags, extendedFlags, builder);
}
}
public Unfiltered deserializeTombstonesOnly(FileDataInput in, SerializationHeader header, DeserializationHelper helper)
throws IOException
{
while (true)
{
int flags = in.readUnsignedByte();
if (isEndOfPartition(flags))
return null;
int extendedFlags = readExtendedFlags(in, flags);
if (kind(flags) == Unfiltered.Kind.RANGE_TOMBSTONE_MARKER)View on GitHub (pinned to 88fd0f6a0e)