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

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


The following commit(s) were added to refs/heads/master by this push:
     new d0830c81cf [HUDI-4518] Add unit test for reentrant lock in diff 
lockProvider (#6624)
d0830c81cf is described below

commit d0830c81cf272c00f5845454747e8f676b11a8a2
Author: KnightChess <[email protected]>
AuthorDate: Sat Sep 10 02:55:02 2022 +0800

    [HUDI-4518] Add unit test for reentrant lock in diff lockProvider (#6624)
---
 .../TestHiveMetastoreBasedLockProvider.java        | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git 
a/hudi-sync/hudi-hive-sync/src/test/java/org/apache/hudi/hive/functional/TestHiveMetastoreBasedLockProvider.java
 
b/hudi-sync/hudi-hive-sync/src/test/java/org/apache/hudi/hive/functional/TestHiveMetastoreBasedLockProvider.java
index 3d129c5899..b01b4cdc05 100644
--- 
a/hudi-sync/hudi-hive-sync/src/test/java/org/apache/hudi/hive/functional/TestHiveMetastoreBasedLockProvider.java
+++ 
b/hudi-sync/hudi-hive-sync/src/test/java/org/apache/hudi/hive/functional/TestHiveMetastoreBasedLockProvider.java
@@ -125,6 +125,28 @@ public class TestHiveMetastoreBasedLockProvider extends 
HiveSyncFunctionalTestHa
       // expected
     }
     lockProvider.unlock();
+
+    // not acquired in the beginning
+    HiveMetastoreBasedLockProvider lockProvider1 = new 
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
+    HiveMetastoreBasedLockProvider lockProvider2 = new 
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
+    lockComponent.setOperationType(DataOperationType.NO_TXN);
+    
Assertions.assertTrue(lockProvider1.acquireLock(lockConfiguration.getConfig()
+        .getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY), 
TimeUnit.MILLISECONDS, lockComponent));
+    try {
+      boolean acquireStatus = 
lockProvider2.acquireLock(lockConfiguration.getConfig()
+          .getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY), 
TimeUnit.MILLISECONDS, lockComponent);
+      Assertions.assertFalse(acquireStatus);
+    } catch (IllegalArgumentException e) {
+      // expected
+    }
+    lockProvider1.unlock();
+    
Assertions.assertTrue(lockProvider2.acquireLock(lockConfiguration.getConfig()
+        .getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY), 
TimeUnit.MILLISECONDS, lockComponent));
+    lockProvider2.unlock();
+
+    lockProvider.close();
+    lockProvider1.close();
+    lockProvider2.close();
   }
 
   @Test

Reply via email to