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

  1. Verify encryption keys and footer/key metadata are correct for this file
  2. Restore the file if corrupt (checksum the object)
  3. 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.