apache/iceberg · error · RuntimeException
Interrupted while processing commits
Error message
Interrupted while processing commits
What it means
Thrown from the commit-service executor loop in BaseCommitService.start when the thread is interrupted while waiting for or processing rewrite file-group commits (e.g. by shutdown or cancellation). It marks the single-threaded committer as aborted mid-cycle; already-committed groups remain, pending ones do not.
Solutions
- Avoid shutting down the job/executor while the commit service is still draining in-progress commits
- Handle the interruption at the job level and re-run the rewrite action to retry uncommitted groups
- Check partial-progress/committed-state before assuming data loss
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java:128 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12).
Data as JSON: /api/errors/7d70c5c4bd582241.
Report an issue: GitHub.
Appendix: source
Thrown at core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java:128
* @param group group of files which are not yet committed
*/
protected abstract void abortFileGroup(T group);
/** Starts a single threaded executor service for handling file group commits. */
public void start() {
Preconditions.checkState(running.compareAndSet(false, true), "Commit service already started");
LOG.info("Starting commit service for {}", table);
committerService.execute(
() -> {
while (running.get() || !completedRewrites.isEmpty() || !inProgressCommits.isEmpty()) {
try {
if (completedRewrites.isEmpty() && inProgressCommits.isEmpty()) {
// give other threads a chance to make progress
Thread.sleep(100);
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new RuntimeException("Interrupted while processing commits", e);
}
// commit whatever is left once done with writing.
if (!running.get() && !completedRewrites.isEmpty()) {
commitReadyCommitGroups();
}
}
});
}
/**
* Places a file group in the queue and commits a batch of file groups if {@link
* BaseCommitService#rewritesPerCommit} number of file groups are present in the queue.
*
* @param group file group to eventually be committed
*/
public void offer(T group) {
LOG.debug("Offered to commit service: {}", group);View on GitHub (pinned to 86d9c8fc54)