This is an automated email from the ASF dual-hosted git repository.
danny0405 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 a0e3f94fa6df refactor: Remove Builder from DynamoDbBasedLockConfig
(#17780)
a0e3f94fa6df is described below
commit a0e3f94fa6df5a8e05d9a22f57dfb3e091823775
Author: voonhous <[email protected]>
AuthorDate: Mon Jan 5 11:39:58 2026 +0800
refactor: Remove Builder from DynamoDbBasedLockConfig (#17780)
- Remove Builder that is not following builder pattern at all
- Remove Builder that is just wrapping TypedProperties
---
.../lock/DynamoDBBasedLockProvider.java | 3 +-
.../lock/DynamoDBBasedLockProviderBase.java | 4 +--
.../hudi/config/DynamoDbBasedLockConfig.java | 42 ++++++----------------
3 files changed, 13 insertions(+), 36 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 2876513b11ed..d7a72ffc54e6 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
@@ -46,8 +46,7 @@ public class DynamoDBBasedLockProvider extends
DynamoDBBasedLockProviderBase {
@Override
public String getDynamoDBPartitionKey(LockConfiguration lockConfiguration) {
- DynamoDbBasedLockConfig config = new DynamoDbBasedLockConfig.Builder()
- .fromProperties(lockConfiguration.getConfig()).build();
+ DynamoDbBasedLockConfig config =
DynamoDbBasedLockConfig.from(lockConfiguration.getConfig());
ValidationUtils.checkArgument(
config.contains(DYNAMODB_LOCK_PARTITION_KEY),
"Config key is not found: " + DYNAMODB_LOCK_PARTITION_KEY.key());
diff --git
a/hudi-aws/src/main/java/org/apache/hudi/aws/transaction/lock/DynamoDBBasedLockProviderBase.java
b/hudi-aws/src/main/java/org/apache/hudi/aws/transaction/lock/DynamoDBBasedLockProviderBase.java
index c956b5371c77..2deccd27a993 100644
---
a/hudi-aws/src/main/java/org/apache/hudi/aws/transaction/lock/DynamoDBBasedLockProviderBase.java
+++
b/hudi-aws/src/main/java/org/apache/hudi/aws/transaction/lock/DynamoDBBasedLockProviderBase.java
@@ -80,9 +80,7 @@ public abstract class DynamoDBBasedLockProviderBase
implements LockProvider<Lock
protected volatile LockItem lock;
protected DynamoDBBasedLockProviderBase(final LockConfiguration
lockConfiguration, final StorageConfiguration<?> conf, DynamoDbClient dynamoDB)
{
- this.dynamoDbBasedLockConfig = new DynamoDbBasedLockConfig.Builder()
- .fromProperties(lockConfiguration.getConfig())
- .build();
+ this.dynamoDbBasedLockConfig =
DynamoDbBasedLockConfig.from(lockConfiguration.getConfig());
this.tableName =
dynamoDbBasedLockConfig.getString(DynamoDbBasedLockConfig.DYNAMODB_LOCK_TABLE_NAME);
long leaseDuration =
dynamoDbBasedLockConfig.getInt(DynamoDbBasedLockConfig.LOCK_ACQUIRE_WAIT_TIMEOUT_MS_PROP_KEY);
dynamoDBPartitionKey = getDynamoDBPartitionKey(lockConfiguration);
diff --git
a/hudi-aws/src/main/java/org/apache/hudi/config/DynamoDbBasedLockConfig.java
b/hudi-aws/src/main/java/org/apache/hudi/config/DynamoDbBasedLockConfig.java
index bb89ade4cb9d..1ef620651b3a 100644
--- a/hudi-aws/src/main/java/org/apache/hudi/config/DynamoDbBasedLockConfig.java
+++ b/hudi-aws/src/main/java/org/apache/hudi/config/DynamoDbBasedLockConfig.java
@@ -28,6 +28,8 @@ import org.apache.hudi.common.table.HoodieTableConfig;
import org.apache.hudi.common.util.Option;
import org.apache.hudi.common.util.ValidationUtils;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.regions.RegionMetadata;
import software.amazon.awssdk.services.dynamodb.model.BillingMode;
@@ -41,12 +43,9 @@ import
software.amazon.awssdk.services.dynamodb.model.BillingMode;
description = "Configs that control DynamoDB based locking mechanisms
required for concurrency control "
+ " between writers to a Hudi table. Concurrency between Hudi's own
table services "
+ " are auto managed internally.")
+@NoArgsConstructor(access = AccessLevel.PACKAGE)
public class DynamoDbBasedLockConfig extends HoodieConfig {
- public static DynamoDbBasedLockConfig.Builder newBuilder() {
- return new DynamoDbBasedLockConfig.Builder();
- }
-
// configs for DynamoDb based locks
public static final String DYNAMODB_BASED_LOCK_PROPERTY_PREFIX =
LockConfiguration.LOCK_PREFIX + "dynamodb.";
@@ -132,31 +131,12 @@ public class DynamoDbBasedLockConfig extends HoodieConfig
{
.sinceVersion("0.10.0")
.withDocumentation("Lock Acquire Wait Timeout in milliseconds");
- /**
- * Builder for {@link DynamoDbBasedLockConfig}.
- */
- public static class Builder {
- private final DynamoDbBasedLockConfig lockConfig = new
DynamoDbBasedLockConfig();
-
- public DynamoDbBasedLockConfig build() {
- lockConfig.setDefaults(DynamoDbBasedLockConfig.class.getName());
- checkRequiredProps();
- return lockConfig;
- }
-
- public Builder fromProperties(TypedProperties props) {
- lockConfig.getProps().putAll(props);
- return this;
- }
-
- private void checkRequiredProps() {
- String errorMsg = "Config key is not found: ";
- ValidationUtils.checkArgument(
- lockConfig.contains(DYNAMODB_LOCK_TABLE_NAME.key()),
- errorMsg + DYNAMODB_LOCK_TABLE_NAME.key());
- ValidationUtils.checkArgument(
- lockConfig.contains(DYNAMODB_LOCK_REGION.key()),
- errorMsg + DYNAMODB_LOCK_REGION.key());
- }
+ public static DynamoDbBasedLockConfig from(TypedProperties properties) {
+ DynamoDbBasedLockConfig config = new DynamoDbBasedLockConfig();
+ config.getProps().putAll(properties);
+ config.setDefaults(DynamoDbBasedLockConfig.class.getName());
+
ValidationUtils.checkArgument(config.contains(DYNAMODB_LOCK_TABLE_NAME.key()),
"Config key is not found: " + DYNAMODB_LOCK_TABLE_NAME.key());
+ ValidationUtils.checkArgument(config.contains(DYNAMODB_LOCK_REGION.key()),
"Config key is not found: " + DYNAMODB_LOCK_REGION.key());
+ return config;
}
-}
\ No newline at end of file
+}