prestodb/presto · error · RuntimeException
Error reading dictionary page
Error message
Error reading dictionary page
What it means
Wraps an IOException raised while decrypting/decompressing the dictionary page in readDictionaryPage — the modular-encryption AAD or the compressed payload failed, meaning the dictionary page is corrupt or the decryption context (keys, AAD) is wrong.
Source
Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/reader/PageReader.java:153
catch (IOException e) {
throw new RuntimeException("Could not decompress page", e);
}
}
public DictionaryPage readDictionaryPage()
{
if (compressedDictionaryPage == null) {
return null;
}
try {
Slice slice = decryptSliceIfNeeded(compressedDictionaryPage.getSlice(), dictionaryPageAdditionalAuthenticationData);
return new DictionaryPage(
decompress(codec, slice, compressedDictionaryPage.getUncompressedSize()),
compressedDictionaryPage.getDictionarySize(),
compressedDictionaryPage.getEncoding());
}
catch (IOException e) {
throw new RuntimeException("Error reading dictionary page", e);
}
}
public long getRetainedSizeInBytes()
{
return INSTANCE_SIZE +
(compressedDictionaryPage == null ? 0 : compressedDictionaryPage.getRetainedSizeInBytes()) +
sizeOf(dataPageAdditionalAuthenticationData) +
sizeOf(dictionaryPageAdditionalAuthenticationData);
}
// additional authenticated data for AES cipher
private Slice decryptSliceIfNeeded(Slice slice, byte[] additionalAuthenticationData)
throws IOException
{
if (!blockDecryptor.isPresent()) {
return slice;
}View on GitHub (pinned to 55bb57d202)
Solutions
- Verify encryption keys and footer/key metadata are correct for this file
- Restore the file if corrupt (checksum the object)
- Confirm writer and reader agree on Parquet modular encryption settings
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/reader/PageReader.java:153 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/8b1e4ac4962b26b8.
Report an issue: GitHub.