You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by bl...@apache.org on 2021/11/01 19:25:01 UTC
[iceberg] 02/04: Hive: Ensure tableLevelMutex is unlocked when
uncommitted metadata delete fails (#3264)
This is an automated email from the ASF dual-hosted git repository.
blue pushed a commit to branch 0.12.x
in repository https://gitbox.apache.org/repos/asf/iceberg.git
commit 94c38f712fbc5b9c405ee2779d1d6f6e3f65031d
Author: jshmchenxi <ch...@qiyi.com>
AuthorDate: Mon Oct 11 18:27:50 2021 +0800
Hive: Ensure tableLevelMutex is unlocked when uncommitted metadata delete fails (#3264)
---
.../src/main/java/org/apache/iceberg/hive/HiveTableOperations.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveTableOperations.java b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveTableOperations.java
index 647c626..8b415dc 100644
--- a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveTableOperations.java
+++ b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveTableOperations.java
@@ -288,8 +288,7 @@ public class HiveTableOperations extends BaseMetastoreTableOperations {
throw new RuntimeException("Interrupted during commit", e);
} finally {
- cleanupMetadataAndUnlock(commitStatus, newMetadataLocation, lockId);
- tableLevelMutex.unlock();
+ cleanupMetadataAndUnlock(commitStatus, newMetadataLocation, lockId, tableLevelMutex);
}
}
@@ -471,7 +470,8 @@ public class HiveTableOperations extends BaseMetastoreTableOperations {
return lockId;
}
- private void cleanupMetadataAndUnlock(CommitStatus commitStatus, String metadataLocation, Optional<Long> lockId) {
+ private void cleanupMetadataAndUnlock(CommitStatus commitStatus, String metadataLocation, Optional<Long> lockId,
+ ReentrantLock tableLevelMutex) {
try {
if (commitStatus == CommitStatus.FAILURE) {
// If we are sure the commit failed, clean up the uncommitted metadata file
@@ -482,6 +482,7 @@ public class HiveTableOperations extends BaseMetastoreTableOperations {
throw e;
} finally {
unlock(lockId);
+ tableLevelMutex.unlock();
}
}