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

  1. Inspect the logged stack trace (the warning includes the exception) to find the underlying IO/catalog failure.
  2. Re-run cleanup with ExpireSnapshots or the RemoveOrphanFiles action to remove leftover manifests.
  3. Check FileIO permissions and object-store availability/throttling metrics around commit time.
  4. 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

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


AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12). Data as JSON: /api/errors/0356d3190087eaf9. Report an issue: GitHub.