{"record":{"id":"0356d3190087eaf9","repo":"apache/iceberg","slug":"failed-to-load-committed-table-metadata-or-during","errorCode":null,"errorMessage":"Failed to load committed table metadata or during cleanup, skipping further cleanup","messagePattern":"Failed to load committed table metadata or during cleanup, skipping further cleanup","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"core/src/main/java/org/apache/iceberg/SnapshotProducer.java","lineNumber":559,"sourceCode":"        Snapshot saved = ops.refresh().snapshot(newSnapshotId.get());\n        if (saved != null) {\n          if (cleanupAfterCommit()) {\n            cleanUncommitted(Sets.newHashSet(saved.allManifests(ops.io())));\n          }\n\n          // also clean up unused manifest lists created by multiple attempts\n          for (String manifestList : manifestLists) {\n            if (!saved.manifestListLocation().equals(manifestList)) {\n              deleteFile(manifestList);\n            }\n          }\n        } else {\n          // saved may not be present if the latest metadata couldn't be loaded due to eventual\n          // consistency problems in refresh. in that case, don't clean up.\n          LOG.warn(\"Failed to load committed snapshot, skipping manifest clean-up\");\n        }\n      } catch (Throwable e) {\n        LOG.warn(\n            \"Failed to load committed table metadata or during cleanup, skipping further cleanup\",\n            e);\n      }\n    }\n\n    try {\n      notifyListeners();\n    } catch (Throwable e) {\n      LOG.warn(\"Failed to notify event listeners\", e);\n    }\n  }\n\n  private void notifyListeners() {\n    try {\n      Object event = updateEvent();\n      if (event != null) {\n        Listeners.notifyAll(event);\n","sourceCodeStart":541,"sourceCodeEnd":577,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/core/src/main/java/org/apache/iceberg/SnapshotProducer.java#L541-L577","documentation":"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.","triggerScenarios":"Any exception (IO error, catalog exception, runtime error) thrown during the post-commit metadata reload or during deleteFile() of obsolete manifests in SnapshotProducer.commit().","commonSituations":"Transient object-store errors (throttling, 503s) while deleting manifest lists; catalog client timeouts; permission errors deleting files; bugs in custom FileIO implementations.","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."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  commit();\n} catch (Throwable t) {\n  LOG.warn(\"post-commit cleanup failed; commit result preserved, schedule orphan cleanup\", t);\n  scheduleRemoveOrphanFiles();\n}","preventionTips":["Monitor object-store error rates around commit times","Grant FileIO delete permissions correctly","Add retries to flaky catalog clients","Run ExpireSnapshots on a schedule"],"tags":["commit","cleanup","io-error"],"backgroundTag":"file-write-failed","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}