apache/iceberg · warning
Failed to load committed table metadata or during cleanup, s
Error message
Failed to load committed table metadata or during cleanup, skipping further cleanup
What it means
This catch-all warning is logged when any Throwable is thrown while re-loading the committed table metadata or while performing manifest cleanup after a successful commit in SnapshotProducer.commit(). The commit itself is not rolled back; the producer simply abandons further cleanup so the actual data/commit remains intact. Orphaned manifest files may be left behind.
Source
Thrown at core/src/main/java/org/apache/iceberg/SnapshotProducer.java:559
Snapshot saved = ops.refresh().snapshot(newSnapshotId.get());
if (saved != null) {
if (cleanupAfterCommit()) {
cleanUncommitted(Sets.newHashSet(saved.allManifests(ops.io())));
}
// also clean up unused manifest lists created by multiple attempts
for (String manifestList : manifestLists) {
if (!saved.manifestListLocation().equals(manifestList)) {
deleteFile(manifestList);
}
}
} else {
// saved may not be present if the latest metadata couldn't be loaded due to eventual
// consistency problems in refresh. in that case, don't clean up.
LOG.warn("Failed to load committed snapshot, skipping manifest clean-up");
}
} catch (Throwable e) {
LOG.warn(
"Failed to load committed table metadata or during cleanup, skipping further cleanup",
e);
}
}
try {
notifyListeners();
} catch (Throwable e) {
LOG.warn("Failed to notify event listeners", e);
}
}
private void notifyListeners() {
try {
Object event = updateEvent();
if (event != null) {
Listeners.notifyAll(event);
View on GitHub (pinned to 86d9c8fc54)
Solutions
- Inspect the logged stack trace (the warning includes the exception) to find the underlying IO/catalog failure.
- Re-run cleanup with ExpireSnapshots or the RemoveOrphanFiles action to remove leftover manifests.
- Check FileIO permissions and object-store availability/throttling metrics around commit time.
- If caused by a flaky catalog, add retry configuration to the catalog client.
Defensive patterns
Strategy: try-catch
Try / catch
try {
commit();
} catch (Throwable t) {
LOG.warn("post-commit cleanup failed; commit result preserved, schedule orphan cleanup", t);
scheduleRemoveOrphanFiles();
} Prevention
- Monitor object-store error rates around commit times
- Grant FileIO delete permissions correctly
- Add retries to flaky catalog clients
- Run ExpireSnapshots on a schedule
When it happens
Trigger: Any exception (IO error, catalog exception, runtime error) thrown during the post-commit metadata reload or during deleteFile() of obsolete manifests in SnapshotProducer.commit().
Common situations: Transient object-store errors (throttling, 503s) while deleting manifest lists; catalog client timeouts; permission errors deleting files; bugs in custom FileIO implementations.
Understand the failure class
Background: "failed to write file", "Could not save figure", "Error saving remote file" — file write failed: causes and fixes across languages and libraries — this error's family across 38 libraries.
Related errors
- Failed to load committed metadata, skipping clean-up
- Failed to load committed snapshot, skipping manifest clean-u
- Failed to commit rewrite, cleaning up rewritten files
- Cannot commit %s due to unexpected exception
- Fail to acquire lock %s to commit new metadata at %s
AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12).
Data as JSON: /api/errors/0356d3190087eaf9.
Report an issue: GitHub.