From 716d828f5206005cfd1cc1c3419a6dace9f4461c Mon Sep 17 00:00:00 2001 From: Erkan Onal Date: Wed, 17 Dec 2025 13:21:39 +0000 Subject: [PATCH 1/3] Expose failed commit count and exceptions in BaseCommitService --- .../apache/iceberg/actions/BaseCommitService.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java b/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java index d45bbfb4a667..f908615e4ec4 100644 --- a/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java +++ b/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java @@ -57,10 +57,12 @@ abstract class BaseCommitService implements Closeable { private final ConcurrentLinkedQueue completedRewrites; private final ConcurrentLinkedQueue inProgressCommits; private final ConcurrentLinkedQueue committedRewrites; + private final List exceptionsOfFailedCommits; private final int rewritesPerCommit; private final AtomicBoolean running = new AtomicBoolean(false); private final long timeoutInMS; private int succeededCommits = 0; + private int failedCommits = 0; /** * Constructs a {@link BaseCommitService} @@ -94,6 +96,7 @@ abstract class BaseCommitService implements Closeable { completedRewrites = Queues.newConcurrentLinkedQueue(); committedRewrites = Queues.newConcurrentLinkedQueue(); inProgressCommits = Queues.newConcurrentLinkedQueue(); + exceptionsOfFailedCommits = Lists.newArrayList(); } /** @@ -231,6 +234,8 @@ private void commitReadyCommitGroups() { succeededCommits++; } catch (Exception e) { LOG.error("Failure during rewrite commit process, partial progress enabled. Ignoring", e); + exceptionsOfFailedCommits.add(e); + failedCommits++; } inProgressCommits.remove(inProgressCommitToken); } @@ -240,6 +245,14 @@ public int succeededCommits() { return succeededCommits; } + public int failedCommits() { + return failedCommits; + } + + public List exceptionsOfFailedCommits() { + return Lists.newArrayList(exceptionsOfFailedCommits); + } + @VisibleForTesting boolean canCreateCommitGroup() { // Either we have a full commit group, or we have completed writing and need to commit From 6e79aaca0b725024b409e4cf926e33f772abfc8b Mon Sep 17 00:00:00 2001 From: Erkan Onal Date: Wed, 17 Dec 2025 13:21:39 +0000 Subject: [PATCH 2/3] Expose failed commit count and exceptions in BaseCommitService --- .../java/org/apache/iceberg/actions/BaseCommitService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java b/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java index f908615e4ec4..9efe09f3cff3 100644 --- a/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java +++ b/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java @@ -19,6 +19,7 @@ package org.apache.iceberg.actions; import java.io.Closeable; +import java.util.Collections; import java.util.List; import java.util.Set; import java.util.UUID; @@ -96,7 +97,7 @@ abstract class BaseCommitService implements Closeable { completedRewrites = Queues.newConcurrentLinkedQueue(); committedRewrites = Queues.newConcurrentLinkedQueue(); inProgressCommits = Queues.newConcurrentLinkedQueue(); - exceptionsOfFailedCommits = Lists.newArrayList(); + exceptionsOfFailedCommits = Collections.synchronizedList(Lists.newArrayList()); } /** From 36c73ec5cc8373c66778d9f97877b9bcc947afa2 Mon Sep 17 00:00:00 2001 From: Erkan Onal Date: Wed, 17 Dec 2025 13:21:39 +0000 Subject: [PATCH 3/3] Expose failed commit count and exceptions in BaseCommitService --- .../java/org/apache/iceberg/actions/BaseCommitService.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java b/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java index 9efe09f3cff3..47fb537b7f5d 100644 --- a/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java +++ b/core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java @@ -63,7 +63,6 @@ abstract class BaseCommitService implements Closeable { private final AtomicBoolean running = new AtomicBoolean(false); private final long timeoutInMS; private int succeededCommits = 0; - private int failedCommits = 0; /** * Constructs a {@link BaseCommitService} @@ -236,7 +235,6 @@ private void commitReadyCommitGroups() { } catch (Exception e) { LOG.error("Failure during rewrite commit process, partial progress enabled. Ignoring", e); exceptionsOfFailedCommits.add(e); - failedCommits++; } inProgressCommits.remove(inProgressCommitToken); } @@ -247,7 +245,7 @@ public int succeededCommits() { } public int failedCommits() { - return failedCommits; + return exceptionsOfFailedCommits.size(); } public List exceptionsOfFailedCommits() {