apache/iceberg · info
The iceberg transaction has been committed, but we failed to
Error message
The iceberg transaction has been committed, but we failed to clean the temporary flink manifests: {} What it means
After a successful Iceberg commit, deleteCommittedManifests removes temporary Flink manifest files. Failure to delete them does not affect the committed transaction; the method logs this warning with job/checkpoint/manifest details and swallows the exception.
Source
Thrown at flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkManifestUtil.java:181
static void deleteCommittedManifests(
String tableName,
FileIO io,
List<ManifestFile> manifestsPath,
String newFlinkJobId,
long checkpointId) {
for (ManifestFile manifest : manifestsPath) {
try {
io.deleteFile(manifest.path());
} catch (Exception e) {
// The flink manifests cleaning failure shouldn't abort the completed checkpoint.
String details =
MoreObjects.toStringHelper(FlinkManifestUtil.class)
.add("tableName", tableName)
.add("flinkJobId", newFlinkJobId)
.add("checkpointId", checkpointId)
.add("manifestPath", manifest)
.toString();
LOG.warn(
"The iceberg transaction has been committed, but we failed to clean the temporary flink manifests: {}",
details,
e);
}
}
}
}
View on GitHub (pinned to 86d9c8fc54)
Solutions
- Safe to ignore in most cases - the commit succeeded and leftover files are cleaned by DeleteOrphanFiles
- Ensure orphan-file cleanup actions are scheduled to reclaim the leaked manifest files
- Avoid running expireSnapshots concurrently with the writing job
- Verify FileIO credentials/permissions remain valid for the job's lifetime
Defensive patterns
Strategy: try-catch
Prevention
- Treat this as benign; schedule DeleteOrphanFiles to reclaim leftover manifests
- Keep FileIO credentials valid for the whole job lifetime
- Avoid concurrent expire/cleanup jobs touching the same locations
When it happens
Trigger: deleteCommittedManifests is called after commit and the underlying FileIO throws while deleting a manifest or manifest-list file (already deleted by retention/orphan cleanup, permission denied, or transient storage error).
Common situations: ExpireSnapshots or DeleteOrphanFiles running concurrently removed the manifests first; S3/HDFS permission changes; short-lived credentials expiring mid-job.
Understand the failure class
Background: "Permission denied" / "Failed to write" file errors: why a library can't write its files to disk (EACCES, EPERM, ENOSPC) and how to fix them — this error's family across 43 libraries.
Related errors
- Failed to delete uncommitted DV {} for table {} task {}
- Failed to list partitions of table %s
- Unsupported YearMonthIntervalType.
- Unsupported DayTimeIntervalType.
- Unsupported DistinctType.
AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12).
Data as JSON: /api/errors/0cf0da41ba1bb300.
Report an issue: GitHub.