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 5d66a5e4e12 [HUDI-7728] Use StorageConfiguration in LockProvider
constructors (#11173)
5d66a5e4e12 is described below
commit 5d66a5e4e12e6245d3de602dbe7ac5de1e34a846
Author: Y Ethan Guo <[email protected]>
AuthorDate: Wed May 8 14:33:26 2024 -0700
[HUDI-7728] Use StorageConfiguration in LockProvider constructors (#11173)
---
.../lock/DynamoDBBasedLockProvider.java | 13 +++----
.../lock/FileSystemBasedLockProvider.java | 4 +-
.../hudi/client/transaction/lock/LockManager.java | 5 ++-
.../lock/ZookeeperBasedLockProvider.java | 4 +-
.../FileSystemBasedLockProviderTestClass.java | 9 +++--
.../InProcessLockProviderWithRuntimeError.java | 7 ++--
.../hudi/client/TestFileBasedLockProvider.java | 16 ++++----
.../transaction/lock/InProcessLockProvider.java | 4 +-
.../common/table/timeline/TimeGeneratorBase.java | 3 +-
.../lock/TestInProcessLockProvider.java | 43 +++++++++++-----------
.../table/timeline/TestWaitBasedTimeGenerator.java | 2 +-
.../lock/HiveMetastoreBasedLockProvider.java | 5 ++-
.../TestHiveMetastoreBasedLockProvider.java | 20 +++++-----
.../testutils/HiveSyncFunctionalTestHarness.java | 5 +++
14 files changed, 77 insertions(+), 63 deletions(-)
diff --git
a/hudi-aws/src/main/java/org/apache/hudi/aws/transaction/lock/DynamoDBBasedLockProvider.java
b/hudi-aws/src/main/java/org/apache/hudi/aws/transaction/lock/DynamoDBBasedLockProvider.java
index a3e61924026..2b67a483f38 100644
---
a/hudi-aws/src/main/java/org/apache/hudi/aws/transaction/lock/DynamoDBBasedLockProvider.java
+++
b/hudi-aws/src/main/java/org/apache/hudi/aws/transaction/lock/DynamoDBBasedLockProvider.java
@@ -19,20 +19,22 @@
package org.apache.hudi.aws.transaction.lock;
import org.apache.hudi.aws.credentials.HoodieAWSCredentialsProviderFactory;
+import org.apache.hudi.aws.utils.DynamoTableUtils;
import org.apache.hudi.common.config.LockConfiguration;
import org.apache.hudi.common.lock.LockProvider;
import org.apache.hudi.common.lock.LockState;
import org.apache.hudi.common.util.StringUtils;
import org.apache.hudi.config.DynamoDbBasedLockConfig;
import org.apache.hudi.exception.HoodieLockException;
+import org.apache.hudi.storage.StorageConfiguration;
import com.amazonaws.services.dynamodbv2.AcquireLockOptions;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBLockClient;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBLockClientOptions;
import com.amazonaws.services.dynamodbv2.LockItem;
import com.amazonaws.services.dynamodbv2.model.LockNotGrantedException;
-
-import org.apache.hudi.aws.utils.DynamoTableUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition;
@@ -42,9 +44,6 @@ import
software.amazon.awssdk.services.dynamodb.model.KeySchemaElement;
import software.amazon.awssdk.services.dynamodb.model.KeyType;
import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput;
import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType;
-import org.apache.hadoop.conf.Configuration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import javax.annotation.concurrent.NotThreadSafe;
@@ -71,11 +70,11 @@ public class DynamoDBBasedLockProvider implements
LockProvider<LockItem> {
protected final DynamoDbBasedLockConfig dynamoDBLockConfiguration;
private volatile LockItem lock;
- public DynamoDBBasedLockProvider(final LockConfiguration lockConfiguration,
final Configuration conf) {
+ public DynamoDBBasedLockProvider(final LockConfiguration lockConfiguration,
final StorageConfiguration<?> conf) {
this(lockConfiguration, conf, null);
}
- public DynamoDBBasedLockProvider(final LockConfiguration lockConfiguration,
final Configuration conf, DynamoDbClient dynamoDB) {
+ public DynamoDBBasedLockProvider(final LockConfiguration lockConfiguration,
final StorageConfiguration<?> conf, DynamoDbClient dynamoDB) {
this.dynamoDBLockConfiguration = DynamoDbBasedLockConfig.newBuilder()
.fromProperties(lockConfiguration.getConfig())
.build();
diff --git
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/FileSystemBasedLockProvider.java
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/FileSystemBasedLockProvider.java
index cf8ffb7186a..73f14355ca9 100644
---
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/FileSystemBasedLockProvider.java
+++
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/FileSystemBasedLockProvider.java
@@ -33,10 +33,10 @@ import org.apache.hudi.config.HoodieWriteConfig;
import org.apache.hudi.exception.HoodieIOException;
import org.apache.hudi.exception.HoodieLockException;
import org.apache.hudi.hadoop.fs.HadoopFSUtils;
+import org.apache.hudi.storage.StorageConfiguration;
import org.apache.hudi.storage.StoragePath;
import org.apache.hudi.storage.StorageSchemes;
-import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
@@ -72,7 +72,7 @@ public class FileSystemBasedLockProvider implements
LockProvider<String>, Serial
private LockInfo lockInfo;
private String currentOwnerLockInfo;
- public FileSystemBasedLockProvider(final LockConfiguration
lockConfiguration, final Configuration configuration) {
+ public FileSystemBasedLockProvider(final LockConfiguration
lockConfiguration, final StorageConfiguration<?> configuration) {
checkRequiredProps(lockConfiguration);
this.lockConfiguration = lockConfiguration;
String lockDirectory =
lockConfiguration.getConfig().getString(FILESYSTEM_LOCK_PATH_PROP_KEY, null);
diff --git
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/LockManager.java
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/LockManager.java
index f1fd05bc02b..3b5b9c449a9 100644
---
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/LockManager.java
+++
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/LockManager.java
@@ -29,6 +29,8 @@ import org.apache.hudi.config.HoodieLockConfig;
import org.apache.hudi.config.HoodieWriteConfig;
import org.apache.hudi.exception.HoodieException;
import org.apache.hudi.exception.HoodieLockException;
+import org.apache.hudi.hadoop.fs.HadoopFSUtils;
+import org.apache.hudi.storage.StorageConfiguration;
import org.apache.hadoop.fs.FileSystem;
import org.slf4j.Logger;
@@ -109,7 +111,8 @@ public class LockManager implements Serializable,
AutoCloseable {
if (lockProvider == null) {
LOG.info("LockProvider " + writeConfig.getLockProviderClass());
lockProvider = (LockProvider)
ReflectionUtils.loadClass(writeConfig.getLockProviderClass(),
- lockConfiguration, hadoopConf.get());
+ new Class<?>[] {LockConfiguration.class, StorageConfiguration.class},
+ lockConfiguration, HadoopFSUtils.getStorageConf(hadoopConf.get()));
}
return lockProvider;
}
diff --git
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/ZookeeperBasedLockProvider.java
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/ZookeeperBasedLockProvider.java
index 4299a603ece..02f137b509a 100644
---
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/ZookeeperBasedLockProvider.java
+++
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/ZookeeperBasedLockProvider.java
@@ -24,13 +24,13 @@ import org.apache.hudi.common.lock.LockState;
import org.apache.hudi.common.util.StringUtils;
import org.apache.hudi.common.util.ValidationUtils;
import org.apache.hudi.exception.HoodieLockException;
+import org.apache.hudi.storage.StorageConfiguration;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.imps.CuratorFrameworkState;
import org.apache.curator.framework.recipes.locks.InterProcessMutex;
import org.apache.curator.retry.BoundedExponentialBackoffRetry;
-import org.apache.hadoop.conf.Configuration;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,7 +64,7 @@ public class ZookeeperBasedLockProvider implements
LockProvider<InterProcessMute
private volatile InterProcessMutex lock = null;
protected LockConfiguration lockConfiguration;
- public ZookeeperBasedLockProvider(final LockConfiguration lockConfiguration,
final Configuration conf) {
+ public ZookeeperBasedLockProvider(final LockConfiguration lockConfiguration,
final StorageConfiguration<?> conf) {
checkRequiredProps(lockConfiguration);
this.lockConfiguration = lockConfiguration;
this.curatorFrameworkClient = CuratorFrameworkFactory.builder()
diff --git
a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/client/transaction/FileSystemBasedLockProviderTestClass.java
b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/client/transaction/FileSystemBasedLockProviderTestClass.java
index 9488d5bab6c..2df166c1c71 100644
---
a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/client/transaction/FileSystemBasedLockProviderTestClass.java
+++
b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/client/transaction/FileSystemBasedLockProviderTestClass.java
@@ -18,14 +18,15 @@
package org.apache.hudi.client.transaction;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
import org.apache.hudi.common.config.LockConfiguration;
import org.apache.hudi.common.lock.LockProvider;
import org.apache.hudi.exception.HoodieIOException;
import org.apache.hudi.exception.HoodieLockException;
import org.apache.hudi.hadoop.fs.HadoopFSUtils;
+import org.apache.hudi.storage.StorageConfiguration;
+
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.io.Serializable;
@@ -50,7 +51,7 @@ public class FileSystemBasedLockProviderTestClass implements
LockProvider<String
private transient Path lockFile;
protected LockConfiguration lockConfiguration;
- public FileSystemBasedLockProviderTestClass(final LockConfiguration
lockConfiguration, final Configuration configuration) {
+ public FileSystemBasedLockProviderTestClass(final LockConfiguration
lockConfiguration, final StorageConfiguration<?> configuration) {
this.lockConfiguration = lockConfiguration;
final String lockDirectory =
lockConfiguration.getConfig().getString(FILESYSTEM_LOCK_PATH_PROP_KEY);
this.retryWaitTimeMs =
lockConfiguration.getConfig().getInteger(LOCK_ACQUIRE_RETRY_WAIT_TIME_IN_MILLIS_PROP_KEY);
diff --git
a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/client/transaction/InProcessLockProviderWithRuntimeError.java
b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/client/transaction/InProcessLockProviderWithRuntimeError.java
index f825012f131..2824e0dd47f 100644
---
a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/client/transaction/InProcessLockProviderWithRuntimeError.java
+++
b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/client/transaction/InProcessLockProviderWithRuntimeError.java
@@ -18,16 +18,17 @@
package org.apache.hudi.client.transaction;
-import java.util.concurrent.TimeUnit;
-import org.apache.hadoop.conf.Configuration;
import org.apache.hudi.client.transaction.lock.InProcessLockProvider;
import org.apache.hudi.common.config.LockConfiguration;
+import org.apache.hudi.storage.StorageConfiguration;
+
+import java.util.concurrent.TimeUnit;
public class InProcessLockProviderWithRuntimeError extends
InProcessLockProvider {
public InProcessLockProviderWithRuntimeError(
LockConfiguration lockConfiguration,
- Configuration conf) {
+ StorageConfiguration<?> conf) {
super(lockConfiguration, conf);
}
diff --git
a/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/client/TestFileBasedLockProvider.java
b/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/client/TestFileBasedLockProvider.java
index e81a85c5978..0fcc9dadea1 100644
---
a/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/client/TestFileBasedLockProvider.java
+++
b/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/client/TestFileBasedLockProvider.java
@@ -22,6 +22,7 @@ package org.apache.hudi.client;
import org.apache.hudi.client.transaction.lock.FileSystemBasedLockProvider;
import org.apache.hudi.common.config.LockConfiguration;
import org.apache.hudi.config.HoodieWriteConfig;
+import org.apache.hudi.storage.StorageConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.junit.jupiter.api.BeforeEach;
@@ -38,6 +39,7 @@ import static
org.apache.hudi.common.config.LockConfiguration.FILESYSTEM_LOCK_PA
import static
org.apache.hudi.common.config.LockConfiguration.LOCK_ACQUIRE_NUM_RETRIES_PROP_KEY;
import static
org.apache.hudi.common.config.LockConfiguration.LOCK_ACQUIRE_RETRY_WAIT_TIME_IN_MILLIS_PROP_KEY;
import static
org.apache.hudi.common.config.LockConfiguration.LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY;
+import static
org.apache.hudi.common.testutils.HoodieTestUtils.getDefaultStorageConf;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -48,7 +50,7 @@ public class TestFileBasedLockProvider {
Path tempDir;
String basePath;
LockConfiguration lockConfiguration;
- Configuration hadoopConf;
+ StorageConfiguration<Configuration> storageConf;
@BeforeEach
public void setUp() throws IOException {
@@ -60,12 +62,12 @@ public class TestFileBasedLockProvider {
properties.setProperty(LOCK_ACQUIRE_RETRY_WAIT_TIME_IN_MILLIS_PROP_KEY,
"1000");
properties.setProperty(LOCK_ACQUIRE_NUM_RETRIES_PROP_KEY, "3");
lockConfiguration = new LockConfiguration(properties);
- hadoopConf = new Configuration();
+ storageConf = getDefaultStorageConf();
}
@Test
public void testAcquireLock() {
- FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, hadoopConf);
+ FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, storageConf);
assertTrue(fileBasedLockProvider.tryLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS));
fileBasedLockProvider.unlock();
@@ -75,7 +77,7 @@ public class TestFileBasedLockProvider {
public void testAcquireLockWithDefaultPath() {
lockConfiguration.getConfig().remove(FILESYSTEM_LOCK_PATH_PROP_KEY);
lockConfiguration.getConfig().setProperty(HoodieWriteConfig.BASE_PATH.key(),
basePath);
- FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, hadoopConf);
+ FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, storageConf);
assertTrue(fileBasedLockProvider.tryLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS));
fileBasedLockProvider.unlock();
@@ -84,7 +86,7 @@ public class TestFileBasedLockProvider {
@Test
public void testUnLock() {
- FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, hadoopConf);
+ FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, storageConf);
assertTrue(fileBasedLockProvider.tryLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS));
fileBasedLockProvider.unlock();
@@ -94,7 +96,7 @@ public class TestFileBasedLockProvider {
@Test
public void testReentrantLock() {
- FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, hadoopConf);
+ FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, storageConf);
assertTrue(fileBasedLockProvider.tryLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS));
assertFalse(fileBasedLockProvider.tryLock(lockConfiguration.getConfig()
@@ -105,7 +107,7 @@ public class TestFileBasedLockProvider {
@Test
public void testUnlockWithoutLock() {
assertDoesNotThrow(() -> {
- FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, hadoopConf);
+ FileSystemBasedLockProvider fileBasedLockProvider = new
FileSystemBasedLockProvider(lockConfiguration, storageConf);
fileBasedLockProvider.unlock();
});
}
diff --git
a/hudi-common/src/main/java/org/apache/hudi/client/transaction/lock/InProcessLockProvider.java
b/hudi-common/src/main/java/org/apache/hudi/client/transaction/lock/InProcessLockProvider.java
index c2edb1864b0..ab191bacab8 100644
---
a/hudi-common/src/main/java/org/apache/hudi/client/transaction/lock/InProcessLockProvider.java
+++
b/hudi-common/src/main/java/org/apache/hudi/client/transaction/lock/InProcessLockProvider.java
@@ -26,8 +26,8 @@ import org.apache.hudi.common.lock.LockProvider;
import org.apache.hudi.common.lock.LockState;
import org.apache.hudi.common.util.ValidationUtils;
import org.apache.hudi.exception.HoodieLockException;
+import org.apache.hudi.storage.StorageConfiguration;
-import org.apache.hadoop.conf.Configuration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,7 +55,7 @@ public class InProcessLockProvider implements
LockProvider<ReentrantReadWriteLoc
private final String basePath;
private final long maxWaitTimeMillis;
- public InProcessLockProvider(final LockConfiguration lockConfiguration,
final Configuration conf) {
+ public InProcessLockProvider(final LockConfiguration lockConfiguration,
final StorageConfiguration<?> conf) {
TypedProperties typedProperties = lockConfiguration.getConfig();
basePath =
lockConfiguration.getConfig().getProperty(HoodieCommonConfig.BASE_PATH.key());
ValidationUtils.checkArgument(basePath != null);
diff --git
a/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/TimeGeneratorBase.java
b/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/TimeGeneratorBase.java
index 672710135ef..c5d76c36119 100644
---
a/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/TimeGeneratorBase.java
+++
b/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/TimeGeneratorBase.java
@@ -91,7 +91,8 @@ public abstract class TimeGeneratorBase implements
TimeGenerator, Serializable {
String lockProviderClass =
lockConfiguration.getConfig().getString("hoodie.write.lock.provider");
LOG.info("LockProvider for TimeGenerator: " + lockProviderClass);
lockProvider = (LockProvider<?>)
ReflectionUtils.loadClass(lockProviderClass,
- lockConfiguration, storageConf.unwrap());
+ new Class<?>[] {LockConfiguration.class,
StorageConfiguration.class},
+ lockConfiguration, storageConf);
}
}
}
diff --git
a/hudi-common/src/test/java/org/apache/hudi/client/transaction/lock/TestInProcessLockProvider.java
b/hudi-common/src/test/java/org/apache/hudi/client/transaction/lock/TestInProcessLockProvider.java
index 6e7dcd7e3fa..47c06e43b9e 100644
---
a/hudi-common/src/test/java/org/apache/hudi/client/transaction/lock/TestInProcessLockProvider.java
+++
b/hudi-common/src/test/java/org/apache/hudi/client/transaction/lock/TestInProcessLockProvider.java
@@ -22,9 +22,9 @@ import org.apache.hudi.common.config.HoodieCommonConfig;
import org.apache.hudi.common.config.LockConfiguration;
import org.apache.hudi.common.config.TypedProperties;
import org.apache.hudi.exception.HoodieLockException;
+import org.apache.hudi.storage.StorageConfiguration;
import junit.framework.AssertionFailedError;
-import org.apache.hadoop.conf.Configuration;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
@@ -36,13 +36,14 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+import static
org.apache.hudi.common.testutils.HoodieTestUtils.getDefaultStorageConf;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertThrows;
public class TestInProcessLockProvider {
private static final Logger LOG =
LoggerFactory.getLogger(TestInProcessLockProvider.class);
- private final Configuration hadoopConfiguration = new Configuration();
+ private final StorageConfiguration<?> storageConf = getDefaultStorageConf();
private final LockConfiguration lockConfiguration1;
private final LockConfiguration lockConfiguration2;
@@ -63,7 +64,7 @@ public class TestInProcessLockProvider {
// Writer 2: try lock | ... lock |------| unlock and close
// Writer 3: try lock | ... lock |------|
unlock and close
List<InProcessLockProvider> lockProviderList = new ArrayList<>();
- InProcessLockProvider lockProvider1 = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider lockProvider1 = new
InProcessLockProvider(lockConfiguration1, storageConf);
lockProviderList.add(lockProvider1);
AtomicBoolean writer1Completed = new AtomicBoolean(false);
AtomicBoolean writer2TryLock = new AtomicBoolean(false);
@@ -81,7 +82,7 @@ public class TestInProcessLockProvider {
// Writer 2 thread in parallel, should block
// and later acquire the lock once it is released
Thread writer2 = new Thread(() -> {
- InProcessLockProvider lockProvider2 = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider lockProvider2 = new
InProcessLockProvider(lockConfiguration1, storageConf);
lockProviderList.add(lockProvider2);
assertDoesNotThrow(() -> {
LOG.info("Writer 2 tries to acquire the lock.");
@@ -117,7 +118,7 @@ public class TestInProcessLockProvider {
}
}
// Lock instance of Writer 3 should be held by Writer 2
- InProcessLockProvider lockProvider3 = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider lockProvider3 = new
InProcessLockProvider(lockConfiguration1, storageConf);
lockProviderList.add(lockProvider3);
boolean isLocked = lockProvider3.getLock().isWriteLocked();
if (!isLocked) {
@@ -173,7 +174,7 @@ public class TestInProcessLockProvider {
@Test
public void testLockAcquisition() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
assertDoesNotThrow(() -> {
inProcessLockProvider.lock();
});
@@ -184,7 +185,7 @@ public class TestInProcessLockProvider {
@Test
public void testLockReAcquisitionBySameThread() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
assertDoesNotThrow(() -> {
inProcessLockProvider.lock();
});
@@ -198,8 +199,8 @@ public class TestInProcessLockProvider {
@Test
public void testLockReAcquisitionBySameThreadWithTwoTables() {
- InProcessLockProvider inProcessLockProvider1 = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
- InProcessLockProvider inProcessLockProvider2 = new
InProcessLockProvider(lockConfiguration2, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider1 = new
InProcessLockProvider(lockConfiguration1, storageConf);
+ InProcessLockProvider inProcessLockProvider2 = new
InProcessLockProvider(lockConfiguration2, storageConf);
assertDoesNotThrow(() -> {
inProcessLockProvider1.lock();
@@ -223,7 +224,7 @@ public class TestInProcessLockProvider {
@Test
public void testLockReAcquisitionByDifferentThread() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
final AtomicBoolean writer2Completed = new AtomicBoolean(false);
// Main test thread
@@ -263,8 +264,8 @@ public class TestInProcessLockProvider {
@Test
public void testLockReAcquisitionByDifferentThreadWithTwoTables() {
- InProcessLockProvider inProcessLockProvider1 = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
- InProcessLockProvider inProcessLockProvider2 = new
InProcessLockProvider(lockConfiguration2, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider1 = new
InProcessLockProvider(lockConfiguration1, storageConf);
+ InProcessLockProvider inProcessLockProvider2 = new
InProcessLockProvider(lockConfiguration2, storageConf);
final AtomicBoolean writer2Stream1Completed = new AtomicBoolean(false);
final AtomicBoolean writer2Stream2Completed = new AtomicBoolean(false);
@@ -329,7 +330,7 @@ public class TestInProcessLockProvider {
@Test
public void testTryLockAcquisition() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
Assertions.assertTrue(inProcessLockProvider.tryLock());
assertDoesNotThrow(() -> {
inProcessLockProvider.unlock();
@@ -338,7 +339,7 @@ public class TestInProcessLockProvider {
@Test
public void testTryLockAcquisitionWithTimeout() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
Assertions.assertTrue(inProcessLockProvider.tryLock(1,
TimeUnit.MILLISECONDS));
assertDoesNotThrow(() -> {
inProcessLockProvider.unlock();
@@ -347,7 +348,7 @@ public class TestInProcessLockProvider {
@Test
public void testTryLockReAcquisitionBySameThread() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
Assertions.assertTrue(inProcessLockProvider.tryLock());
assertThrows(HoodieLockException.class, () -> {
inProcessLockProvider.tryLock(1, TimeUnit.MILLISECONDS);
@@ -359,7 +360,7 @@ public class TestInProcessLockProvider {
@Test
public void testTryLockReAcquisitionByDifferentThread() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
final AtomicBoolean writer2Completed = new AtomicBoolean(false);
// Main test thread
@@ -387,7 +388,7 @@ public class TestInProcessLockProvider {
@Test
public void testTryUnLockByDifferentThread() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
final AtomicBoolean writer3Completed = new AtomicBoolean(false);
// Main test thread
@@ -431,7 +432,7 @@ public class TestInProcessLockProvider {
@Test
public void testTryLockAcquisitionBeforeTimeOutFromTwoThreads() {
- final InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ final InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
final int threadCount = 3;
final long awaitMaxTimeoutMs = 2000L;
final CountDownLatch latch = new CountDownLatch(threadCount);
@@ -492,7 +493,7 @@ public class TestInProcessLockProvider {
@Test
public void testLockReleaseByClose() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
assertDoesNotThrow(() -> {
inProcessLockProvider.lock();
});
@@ -503,7 +504,7 @@ public class TestInProcessLockProvider {
@Test
public void testRedundantUnlock() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
assertDoesNotThrow(() -> {
inProcessLockProvider.lock();
});
@@ -517,7 +518,7 @@ public class TestInProcessLockProvider {
@Test
public void testUnlockWithoutLock() {
- InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, hadoopConfiguration);
+ InProcessLockProvider inProcessLockProvider = new
InProcessLockProvider(lockConfiguration1, storageConf);
assertDoesNotThrow(() -> {
inProcessLockProvider.unlock();
});
diff --git
a/hudi-common/src/test/java/org/apache/hudi/common/table/timeline/TestWaitBasedTimeGenerator.java
b/hudi-common/src/test/java/org/apache/hudi/common/table/timeline/TestWaitBasedTimeGenerator.java
index dcc92b969df..681e62bdeef 100644
---
a/hudi-common/src/test/java/org/apache/hudi/common/table/timeline/TestWaitBasedTimeGenerator.java
+++
b/hudi-common/src/test/java/org/apache/hudi/common/table/timeline/TestWaitBasedTimeGenerator.java
@@ -50,7 +50,7 @@ public class TestWaitBasedTimeGenerator {
NEED_TO_LOCK_LATER.set(lockLater);
}
- public MockInProcessLockProvider(LockConfiguration lockConfiguration,
Configuration conf) {
+ public MockInProcessLockProvider(LockConfiguration lockConfiguration,
StorageConfiguration<?> conf) {
super(lockConfiguration, conf);
}
diff --git
a/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/transaction/lock/HiveMetastoreBasedLockProvider.java
b/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/transaction/lock/HiveMetastoreBasedLockProvider.java
index 4c5aa5cb4f7..b458df9a579 100644
---
a/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/transaction/lock/HiveMetastoreBasedLockProvider.java
+++
b/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/transaction/lock/HiveMetastoreBasedLockProvider.java
@@ -25,6 +25,7 @@ import org.apache.hudi.common.util.StringUtils;
import org.apache.hudi.common.util.ValidationUtils;
import org.apache.hudi.exception.HoodieLockException;
import org.apache.hudi.hive.util.IMetaStoreClientUtil;
+import org.apache.hudi.storage.StorageConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.conf.HiveConf;
@@ -87,12 +88,12 @@ public class HiveMetastoreBasedLockProvider implements
LockProvider<LockResponse
private ScheduledFuture<?> future = null;
private final ScheduledExecutorService executor =
Executors.newScheduledThreadPool(2);
- public HiveMetastoreBasedLockProvider(final LockConfiguration
lockConfiguration, final Configuration conf) {
+ public HiveMetastoreBasedLockProvider(final LockConfiguration
lockConfiguration, final StorageConfiguration<?> conf) {
this(lockConfiguration);
try {
HiveConf hiveConf = new HiveConf();
setHiveLockConfs(hiveConf);
- hiveConf.addResource(conf);
+ hiveConf.addResource(conf.unwrapAs(Configuration.class));
this.hiveClient = IMetaStoreClientUtil.getMSC(hiveConf);
} catch (MetaException | HiveException e) {
throw new HoodieLockException("Failed to create HiveMetaStoreClient", e);
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 b01b4cdc058..6f456e0551b 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
@@ -21,8 +21,8 @@ package org.apache.hudi.hive.functional;
import org.apache.hudi.common.config.LockConfiguration;
import org.apache.hudi.common.config.TypedProperties;
-import org.apache.hudi.hive.transaction.lock.HiveMetastoreBasedLockProvider;
import org.apache.hudi.hive.testutils.HiveSyncFunctionalTestHarness;
+import org.apache.hudi.hive.transaction.lock.HiveMetastoreBasedLockProvider;
import org.apache.hadoop.hive.metastore.api.DataOperationType;
import org.apache.hadoop.hive.metastore.api.LockComponent;
@@ -80,7 +80,7 @@ public class TestHiveMetastoreBasedLockProvider extends
HiveSyncFunctionalTestHa
@Test
public void testAcquireLock() throws Exception {
- HiveMetastoreBasedLockProvider lockProvider = new
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
+ HiveMetastoreBasedLockProvider lockProvider = new
HiveMetastoreBasedLockProvider(lockConfiguration, storageConf());
lockComponent.setOperationType(DataOperationType.NO_TXN);
Assertions.assertTrue(lockProvider.acquireLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS, lockComponent));
@@ -100,7 +100,7 @@ public class TestHiveMetastoreBasedLockProvider extends
HiveSyncFunctionalTestHa
@Test
public void testUnlock() throws Exception {
- HiveMetastoreBasedLockProvider lockProvider = new
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
+ HiveMetastoreBasedLockProvider lockProvider = new
HiveMetastoreBasedLockProvider(lockConfiguration, storageConf());
lockComponent.setOperationType(DataOperationType.NO_TXN);
Assertions.assertTrue(lockProvider.acquireLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS, lockComponent));
@@ -113,7 +113,7 @@ public class TestHiveMetastoreBasedLockProvider extends
HiveSyncFunctionalTestHa
@Test
public void testReentrantLock() throws Exception {
- HiveMetastoreBasedLockProvider lockProvider = new
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
+ HiveMetastoreBasedLockProvider lockProvider = new
HiveMetastoreBasedLockProvider(lockConfiguration, storageConf());
lockComponent.setOperationType(DataOperationType.NO_TXN);
Assertions.assertTrue(lockProvider.acquireLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS, lockComponent));
@@ -127,8 +127,8 @@ public class TestHiveMetastoreBasedLockProvider extends
HiveSyncFunctionalTestHa
lockProvider.unlock();
// not acquired in the beginning
- HiveMetastoreBasedLockProvider lockProvider1 = new
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
- HiveMetastoreBasedLockProvider lockProvider2 = new
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
+ HiveMetastoreBasedLockProvider lockProvider1 = new
HiveMetastoreBasedLockProvider(lockConfiguration, storageConf());
+ HiveMetastoreBasedLockProvider lockProvider2 = new
HiveMetastoreBasedLockProvider(lockConfiguration, storageConf());
lockComponent.setOperationType(DataOperationType.NO_TXN);
Assertions.assertTrue(lockProvider1.acquireLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS, lockComponent));
@@ -152,8 +152,8 @@ public class TestHiveMetastoreBasedLockProvider extends
HiveSyncFunctionalTestHa
@Test
public void testWaitingLock() throws Exception {
// create different HiveMetastoreBasedLockProvider to simulate different
applications
- HiveMetastoreBasedLockProvider lockProvider1 = new
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
- HiveMetastoreBasedLockProvider lockProvider2 = new
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
+ HiveMetastoreBasedLockProvider lockProvider1 = new
HiveMetastoreBasedLockProvider(lockConfiguration, storageConf());
+ HiveMetastoreBasedLockProvider lockProvider2 = new
HiveMetastoreBasedLockProvider(lockConfiguration, storageConf());
lockComponent.setOperationType(DataOperationType.NO_TXN);
Assertions.assertTrue(lockProvider1.acquireLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS, lockComponent));
@@ -166,7 +166,7 @@ public class TestHiveMetastoreBasedLockProvider extends
HiveSyncFunctionalTestHa
}
lockProvider1.unlock();
// create the third HiveMetastoreBasedLockProvider to acquire lock
- HiveMetastoreBasedLockProvider lockProvider3 = new
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
+ HiveMetastoreBasedLockProvider lockProvider3 = new
HiveMetastoreBasedLockProvider(lockConfiguration, storageConf());
boolean acquireStatus =
lockProvider3.acquireLock(lockConfiguration.getConfig()
.getLong(LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY),
TimeUnit.MILLISECONDS, lockComponent);
// we should acquired lock, since lockProvider1 has already released lock
@@ -180,7 +180,7 @@ public class TestHiveMetastoreBasedLockProvider extends
HiveSyncFunctionalTestHa
@Test
public void testUnlockWithoutLock() {
- HiveMetastoreBasedLockProvider lockProvider = new
HiveMetastoreBasedLockProvider(lockConfiguration, hiveConf());
+ HiveMetastoreBasedLockProvider lockProvider = new
HiveMetastoreBasedLockProvider(lockConfiguration, storageConf());
lockComponent.setOperationType(DataOperationType.NO_TXN);
lockProvider.unlock();
}
diff --git
a/hudi-sync/hudi-hive-sync/src/test/java/org/apache/hudi/hive/testutils/HiveSyncFunctionalTestHarness.java
b/hudi-sync/hudi-hive-sync/src/test/java/org/apache/hudi/hive/testutils/HiveSyncFunctionalTestHarness.java
index f84de8a8d34..70d77abd248 100644
---
a/hudi-sync/hudi-hive-sync/src/test/java/org/apache/hudi/hive/testutils/HiveSyncFunctionalTestHarness.java
+++
b/hudi-sync/hudi-hive-sync/src/test/java/org/apache/hudi/hive/testutils/HiveSyncFunctionalTestHarness.java
@@ -28,6 +28,7 @@ import org.apache.hudi.hive.HiveSyncConfig;
import org.apache.hudi.hive.HoodieHiveSyncClient;
import org.apache.hudi.hive.ddl.HiveQueryDDLExecutor;
import org.apache.hudi.hive.util.IMetaStoreClientUtil;
+import org.apache.hudi.storage.StorageConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
@@ -85,6 +86,10 @@ public class HiveSyncFunctionalTestHarness {
return hiveTestService.getHiveServer().getHiveConf();
}
+ public StorageConfiguration<Configuration> storageConf() {
+ return HadoopFSUtils.getStorageConf(hiveConf());
+ }
+
public ZookeeperTestService zkService() {
return zookeeperTestService;
}