This is an automated email from the ASF dual-hosted git repository.
dengzh 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 d073994160f HIVE-28788: ObjectStore failed to commit the transaction
could lead to connection starvation (#5661)
d073994160f is described below
commit d073994160f044cec72a0947299fcf816af8feef
Author: dengzh <[email protected]>
AuthorDate: Fri Mar 28 17:54:27 2025 +0800
HIVE-28788: ObjectStore failed to commit the transaction could lead to
connection starvation (#5661)
---
.../apache/hadoop/hive/metastore/ObjectStore.java | 27 +---------------------
.../org/apache/hadoop/hive/metastore/RawStore.java | 11 ---------
2 files changed, 1 insertion(+), 37 deletions(-)
diff --git
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index 13a5a64cfbd..f3fd213a162 100644
---
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -560,24 +560,9 @@ public void shutdown() {
*/
@Override
public boolean openTransaction() {
- return openTransaction(null);
- }
-
- /**
- * Opens a new one or the one already created. Every call of this function
must
- * have corresponding commit or rollback function call.
- *
- * @param isolationLevel The transaction isolation level. Only possible to
set on the first call.
- * @return an active transaction
- */
- @Override
- public boolean openTransaction(String isolationLevel) {
openTrasactionCalls++;
if (openTrasactionCalls == 1) {
currentTransaction = pm.currentTransaction();
- if (isolationLevel != null) {
- currentTransaction.setIsolationLevel(isolationLevel);
- }
currentTransaction.begin();
transactionStatus = TXN_STATUS.OPEN;
} else {
@@ -587,16 +572,10 @@ public boolean openTransaction(String isolationLevel) {
throw new RuntimeException("openTransaction called in an interior"
+ " transaction scope, but currentTransaction is not active.");
}
-
- // Can not change the isolation level on an already open transaction
- if (isolationLevel != null &&
!isolationLevel.equals(currentTransaction.getIsolationLevel())) {
- throw new RuntimeException("Can not set isolation level on an open
transaction");
- }
}
boolean result = currentTransaction.isActive();
- debugLog("Open transaction: count = " + openTrasactionCalls + ", isActive
= " + result + ", isolationLevel = "
- + currentTransaction.getIsolationLevel());
+ debugLog("Open transaction: count = " + openTrasactionCalls + ", isActive
= " + result);
return result;
}
@@ -677,10 +656,6 @@ public boolean isActiveTransaction() {
*/
@Override
public void rollbackTransaction() {
- if (openTrasactionCalls < 1) {
- debugLog("rolling back transaction: no open transactions: " +
openTrasactionCalls);
- return;
- }
debugLog("Rollback transaction, isActive: " + isActiveTransaction());
try {
if (isActiveTransaction() && transactionStatus != TXN_STATUS.ROLLBACK) {
diff --git
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
index 61e6ae93039..6a44bf239ce 100644
---
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
+++
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
@@ -140,17 +140,6 @@ public interface RawStore extends Configurable {
*/
boolean openTransaction();
- /**
- * Opens a new one or the one already created. Every call of this function
must
- * have corresponding commit or rollback function call.
- *
- * @param isolationLevel The transaction isolation level. Only possible to
set on the first call.
- * @return an active transaction
- */
- default boolean openTransaction(String isolationLevel) {
- throw new UnsupportedOperationException("Setting isolation level for this
Store is not supported");
- }
-
/**
* if this is the commit of the first open call then an actual commit is
* called.