prestodb/presto · error · PrestoException
ICEBERG_FILESYSTEM_ERROR
ICEBERG_FILESYSTEM_ERROR
Error message
Failed to read table files
What it means
FilesTable.buildPages wraps the whole manifest/data-file reading loop: any exception while reading table files (IO errors, corrupt manifests, access failures) is converted into this PrestoException with the underlying cause attached, indicating failure to enumerate the table's data files for the FILES metadata table.
Source
Thrown at presto-iceberg/src/main/java/com/facebook/presto/iceberg/FilesTable.java:202
.collect(toImmutableMap(
Map.Entry<Integer, ByteBuffer>::getKey,
entry -> Transforms.identity().toHumanString(idToTypeMap.get(entry.getKey()),
Conversions.fromByteBuffer(idToTypeMap.get(entry.getKey()), entry.getValue())))));
}
if (checkNonNull(dataFile.keyMetadata(), pagesBuilder)) {
pagesBuilder.appendVarbinary(Slices.wrappedBuffer(dataFile.keyMetadata()));
}
if (checkNonNull(dataFile.splitOffsets(), pagesBuilder)) {
pagesBuilder.appendBigintArray(dataFile.splitOffsets());
}
if (checkNonNull(dataFile.equalityFieldIds(), pagesBuilder)) {
pagesBuilder.appendIntegerArray(dataFile.equalityFieldIds());
}
pagesBuilder.endRow();
}
}
catch (IOException e) {
throw new PrestoException(ICEBERG_FILESYSTEM_ERROR, "Failed to read table files", e);
}
catch (RuntimeException e) {
// Catch Avro-specific exceptions that may occur during manifest deserialization
if (isAvroException(e)) {
throw new PrestoException(ICEBERG_INVALID_METADATA,
"Cannot read manifest files. Manifests may be written by a newer Iceberg version.", e);
}
throw e;
}
// Validate that we successfully read files if manifests exist
// Check snapshot summary to avoid false positives on legitimately empty tables
if (manifestCount > 0 && fileCount == 0) {
long expectedFileCount = 0;
if (icebergTable.currentSnapshot() != null) {
Map<String, String> summary = icebergTable.currentSnapshot().summary();
try {
expectedFileCount = Long.parseLong(summary.getOrDefault("total-data-files", "0"));View on GitHub (pinned to 55bb57d202)
Solutions
- Inspect the cause: fix underlying IO/permission problems on the table location
- Verify manifest files are not corrupted; repair with Iceberg's remove_orphan_files/rewrite tooling
- Retry if the failure was transient (e.g. S3 throttling)
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at presto-iceberg/src/main/java/com/facebook/presto/iceberg/FilesTable.java:202 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/d071e47daf7f087f.
Report an issue: GitHub.