This is an automated email from the ASF dual-hosted git repository.

dkuzmenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new d55885ee5ef HIVE-29450: Addendum: Disable retries on write conflict 
for explicit transactions (#6365)
d55885ee5ef is described below

commit d55885ee5ef5036c3371ccd46cd46fa20715a58e
Author: Denys Kuzmenko <[email protected]>
AuthorDate: Wed Mar 18 14:48:07 2026 +0200

    HIVE-29450: Addendum: Disable retries on write conflict for explicit 
transactions (#6365)
---
 .../src/main/java/org/apache/iceberg/hive/HiveTxnCoordinator.java | 8 +++++++-
 .../src/main/java/org/apache/iceberg/mr/hive/IcebergAcidUtil.java | 2 +-
 .../mr/hive/test/concurrent/HiveIcebergStorageHandlerTxnStub.java | 2 +-
 .../iceberg/mr/hive/test/concurrent/HiveTxnCoordinatorStub.java   | 4 ++--
 4 files changed, 11 insertions(+), 5 deletions(-)

diff --git 
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/HiveTxnCoordinator.java
 
b/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/HiveTxnCoordinator.java
index 47d2ec30d11..598854c1d13 100644
--- 
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/HiveTxnCoordinator.java
+++ 
b/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/HiveTxnCoordinator.java
@@ -65,10 +65,12 @@ public class HiveTxnCoordinator implements TxnCoordinator {
   private final IMetaStoreClient msClient;
 
   private final Map<String, HiveTransaction> stagedUpdates = 
Maps.newConcurrentMap();
+  private final boolean isExplicitTransaction;
 
-  public HiveTxnCoordinator(Configuration conf, IMetaStoreClient msClient) {
+  public HiveTxnCoordinator(Configuration conf, IMetaStoreClient msClient, 
boolean isExplicitTransaction) {
     this.conf = conf;
     this.msClient = msClient;
+    this.isExplicitTransaction = isExplicitTransaction;
   }
 
   public Transaction getOrCreateTransaction(org.apache.iceberg.Table table) {
@@ -119,6 +121,10 @@ public synchronized void commit() throws TException {
           });
 
     } catch (ValidationException e) {
+      if (isExplicitTransaction) {
+        // In explicit transactions, let ValidationException propagate to the 
client; no retry will be attempted.
+        throw e;
+      }
       throw MetaStoreUtils.newMetaException(e);
 
     } finally {
diff --git 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergAcidUtil.java
 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergAcidUtil.java
index 33954d106eb..c615c1d82c2 100644
--- 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergAcidUtil.java
+++ 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergAcidUtil.java
@@ -238,7 +238,7 @@ public static Transaction getOrCreateTransaction(Table 
table, Configuration conf
       return table.newTransaction();
     }
     HiveTxnCoordinator txnCoordinator = txnManager.getOrSetTxnCoordinator(
-        HiveTxnCoordinator.class, msClient -> new HiveTxnCoordinator(conf, 
msClient));
+        HiveTxnCoordinator.class, msClient -> new HiveTxnCoordinator(conf, 
msClient, isExplicitTxnOpen));
     return txnCoordinator != null ?
         txnCoordinator.getOrCreateTransaction(table) : table.newTransaction();
   }
diff --git 
a/iceberg/iceberg-handler/src/test/java/org/apache/iceberg/mr/hive/test/concurrent/HiveIcebergStorageHandlerTxnStub.java
 
b/iceberg/iceberg-handler/src/test/java/org/apache/iceberg/mr/hive/test/concurrent/HiveIcebergStorageHandlerTxnStub.java
index 72fc2726ec9..1f855249531 100644
--- 
a/iceberg/iceberg-handler/src/test/java/org/apache/iceberg/mr/hive/test/concurrent/HiveIcebergStorageHandlerTxnStub.java
+++ 
b/iceberg/iceberg-handler/src/test/java/org/apache/iceberg/mr/hive/test/concurrent/HiveIcebergStorageHandlerTxnStub.java
@@ -39,7 +39,7 @@ public HiveIcebergOutputCommitter getOutputCommitter() {
       return super.getOutputCommitter();
     }
     txnManager.getOrSetTxnCoordinator(
-        HiveTxnCoordinator.class, msClient -> new HiveTxnCoordinatorStub(conf, 
msClient));
+        HiveTxnCoordinator.class, msClient -> new HiveTxnCoordinatorStub(conf, 
msClient, isExplicitTxnOpen));
     return new HiveIcebergOutputCommitter();
   }
 }
diff --git 
a/iceberg/iceberg-handler/src/test/java/org/apache/iceberg/mr/hive/test/concurrent/HiveTxnCoordinatorStub.java
 
b/iceberg/iceberg-handler/src/test/java/org/apache/iceberg/mr/hive/test/concurrent/HiveTxnCoordinatorStub.java
index e2416507c04..b4cd08ee5d8 100644
--- 
a/iceberg/iceberg-handler/src/test/java/org/apache/iceberg/mr/hive/test/concurrent/HiveTxnCoordinatorStub.java
+++ 
b/iceberg/iceberg-handler/src/test/java/org/apache/iceberg/mr/hive/test/concurrent/HiveTxnCoordinatorStub.java
@@ -26,8 +26,8 @@
 
 public class HiveTxnCoordinatorStub extends HiveTxnCoordinator {
 
-  public HiveTxnCoordinatorStub(Configuration conf, IMetaStoreClient msClient) 
{
-    super(conf, msClient);
+  public HiveTxnCoordinatorStub(Configuration conf, IMetaStoreClient msClient, 
boolean isExplicitTransaction) {
+    super(conf, msClient, isExplicitTransaction);
   }
 
   @Override

Reply via email to