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 3d129c5899e65..b01b4cdc05842 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 void testReentrantLock() throws Exception { // 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