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