prestodb/presto · error · IOException

Unexpected error in orc file tail reading after cache miss

Error message

Unexpected error in orc file tail reading after cache miss

What it means

ORC tail-cache error in CachingOrcFileTailSource: after a cache miss, the delegate read of the file tail threw unexpectedly, and the error is rethrown tagged 'after cache miss'. The underlying cause (I/O failure, corruption) is in the cause chain; the cache only softens hits, it cannot recover failing reads.

Source

Thrown at presto-orc/src/main/java/com/facebook/presto/orc/cache/CachingOrcFileTailSource.java:65

            return delegate.getOrcFileTail(orcDataSource, metadataReader, writeValidation, cacheable, fileModificationTime);
        }
        try {
            OrcFileTail orcFileTail = cache.getIfPresent(orcDataSource.getId());
            if (orcFileTail != null) {
                if (orcFileTail.getFileModificationTime() == fileModificationTime) {
                    return orcFileTail;
                }
                cache.invalidate(orcDataSource.getId()); // stale entry
                // This get call is to increment the miss count for invalidated entries so the stats are recorded correctly.
                cache.getIfPresent(orcDataSource.getId());
            }
            orcFileTail = delegate.getOrcFileTail(orcDataSource, metadataReader, writeValidation, cacheable, fileModificationTime);
            cache.put(orcDataSource.getId(), orcFileTail);
            return orcFileTail;
        }
        catch (UncheckedExecutionException e) {
            throwIfInstanceOf(e.getCause(), IOException.class);
            throw new IOException("Unexpected error in orc file tail reading after cache miss", e.getCause());
        }
    }
}

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Inspect the cause chain for the underlying I/O or corruption error
  2. Verify the ORC file is readable and complete
  3. Check for cache-filesystem mismatch (file changed while cached metadata retained)
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at presto-orc/src/main/java/com/facebook/presto/orc/cache/CachingOrcFileTailSource.java:65 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/cedf61926265384a. Report an issue: GitHub.