prestodb/presto · error · IllegalArgumentException
Invalid uncompressedSize for GZIP input. Expected %s, actual
Error message
Invalid uncompressedSize for GZIP input. Expected %s, actual: %s
What it means
Post-decompression consistency check in decompressGzip: the Parquet page header declares an uncompressedSize, but the GZIP stream decompressed to a different byte count (either the decompressed data ended early/overflowed). This means the page header or the compressed payload is corrupt, or the file was written by a nonconforming writer.
Source
Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/ParquetCompressionUtils.java:107
}
byte[] buffer = new byte[uncompressedSize];
int bytesRead = 0;
boolean eos = false;
try (GZIPInputStream gzipInputStream = new GZIPInputStream(input.getInput(), min(GZIP_BUFFER_SIZE, input.length()))) {
int n;
do {
n = gzipInputStream.read(buffer, bytesRead, buffer.length - bytesRead);
if (n < 0) {
eos = true;
break;
}
bytesRead += n;
} while (bytesRead < buffer.length);
checkArgument(eos || gzipInputStream.read() == -1, "Invalid uncompressedSize for GZIP input. Actual size exceeds %s bytes", uncompressedSize);
}
if (bytesRead != uncompressedSize) {
throw new IllegalArgumentException(format("Invalid uncompressedSize for GZIP input. Expected %s, actual: %s", uncompressedSize, bytesRead));
}
return wrappedBuffer(buffer, 0, bytesRead);
}
private static Slice decompressLz4(Slice input, int uncompressedSize)
{
return decompressFramed(new Lz4Decompressor(), input, uncompressedSize);
}
private static Slice decompressLZO(Slice input, int uncompressedSize)
{
return decompressFramed(new LzoDecompressor(), input, uncompressedSize);
}
private static Slice decompressFramed(Decompressor decompressor, Slice input, int uncompressedSize)
{
long totalDecompressedCount = 0;
// over allocate buffer which makes decompression easierView on GitHub (pinned to 55bb57d202)
Solutions
- Regenerate the Parquet file with a conforming writer (verify sizes match)
- Verify file transfer/storage integrity — checksum the object
- Check for mixed gzip members or truncated streams; if intended, split pages so sizes agree
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/ParquetCompressionUtils.java:107 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/7bd3234401361954.
Report an issue: GitHub.