apache/cassandra · error · IllegalStateException
buffer to uncompress into is not large enough; buf size =
Error message
buffer to uncompress into is not large enough; buf size = %d, buf offset = %d, target size = %s
What it means
Fired in EncryptionUtils.uncompress when the supplied output buffer is smaller than the compressed frame's declared outputLength and allowBufferResize is false. It is a guard against under-sized caller-provided buffers during encrypted-frame decompression (SSL streaming paths).
Solutions
- Provide/resize the output buffer to at least the declared uncompressed length, or allow buffer resize (allowBufferResize=true)
- Verify the compressed frame's declared outputLength matches the compressor's expectation
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/java/org/apache/cassandra/security/EncryptionUtils.java:203 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/7a6ab5eea2618fbc.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/security/EncryptionUtils.java:203
int outputLength = inputBuffer.getInt();
outputBuffer = ByteBufferUtil.ensureCapacity(outputBuffer, outputLength, allowBufferResize);
compressor.uncompress(inputBuffer, outputBuffer);
outputBuffer.position(0).limit(outputLength);
return outputBuffer;
}
public static int uncompress(byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset, ICompressor compressor) throws IOException
{
int outputLength = readInt(input, inputOffset);
inputOffset += 4;
inputLength -= 4;
if (output.length - outputOffset < outputLength)
{
String msg = String.format("buffer to uncompress into is not large enough; buf size = %d, buf offset = %d, target size = %s",
output.length, outputOffset, outputLength);
throw new IllegalStateException(msg);
}
return compressor.uncompress(input, inputOffset, inputLength, output, outputOffset);
}
private static int readInt(byte[] input, int inputOffset)
{
return (input[inputOffset + 3] & 0xFF)
| ((input[inputOffset + 2] & 0xFF) << 8)
| ((input[inputOffset + 1] & 0xFF) << 16)
| ((input[inputOffset] & 0xFF) << 24);
}
/**
* A simple {@link java.nio.channels.Channel} adapter for ByteBuffers.
*/
private static final class ChannelAdapter implements WritableByteChannel
{View on GitHub (pinned to 88fd0f6a0e)