apache/iceberg · warning
Suppressing exception in catch: {}
Error message
Suppressing exception in catch: {} What it means
A warning logged in RowDataRewriter.map's cleanup path: after the original throwable occurred during commit, closing/aborting the writer also threw, and the secondary exception is attached via addSuppressed and logged. The original exception is still rethrown afterwards.
Source
Thrown at flink/v2.2/flink/src/main/java/org/apache/iceberg/flink/source/RowDataRewriter.java:154
public List<DataFile> map(CombinedScanTask task) throws Exception {
// Initialize the task writer.
this.writer = taskWriterFactory.create();
try (DataIterator<RowData> iterator =
new DataIterator<>(rowDataReader, task, io, encryptionManager)) {
while (iterator.hasNext()) {
RowData rowData = iterator.next();
writer.write(rowData);
}
return Lists.newArrayList(writer.dataFiles());
} catch (Throwable originalThrowable) {
try {
LOG.error("Aborting commit for (subTaskId {}, attemptId {})", subTaskId, attemptId);
writer.abort();
LOG.error("Aborted commit for (subTaskId {}, attemptId {})", subTaskId, attemptId);
} catch (Throwable inner) {
if (originalThrowable != inner) {
originalThrowable.addSuppressed(inner);
LOG.warn("Suppressing exception in catch: {}", inner.getMessage(), inner);
}
}
if (originalThrowable instanceof Exception) {
throw originalThrowable;
} else {
throw new RuntimeException(originalThrowable);
}
}
}
}
}
View on GitHub (pinned to 86d9c8fc54)
Solutions
- Inspect the suppressed exception logged with this message to find the secondary root cause (often fileIO or network)
- Fix the original exception first — it is the primary failure and is rethrown
- Verify storage credentials/permissions so abort/delete cleanup succeeds
Defensive patterns
Strategy: try-catch
Try / catch
try {
writer.abort();
} catch (Throwable inner) {
if (original != inner) original.addSuppressed(inner);
} Prevention
- Fix the primary commit exception; the suppressed one is secondary cleanup failure
- Ensure FileIO connectivity/credentials are healthy so abort paths succeed
When it happens
Trigger: Any Throwable thrown while aborting writers during commit failure handling (writer.abort() in the catch block of map), when the inner throwable is not the same object as the original.
Common situations: FileIO/network errors while cleaning up data files after a failed commit; two failures in quick succession (e.g. commit fails due to commit-state exception, abort fails due to S3 connectivity).
Related errors
- Suppressing failure in catch block
- Suppressing failure in finally block
- Suppressing exception in catch: {}
- Suppressing exception in catch: {}
- Suppressing exception in catch: {}
AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12).
Data as JSON: /api/errors/c94583a96018d361.
Report an issue: GitHub.