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
+}

Reply via email to