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

vhs pushed a commit to branch release-1.0.2
in repository https://gitbox.apache.org/repos/asf/hudi.git


The following commit(s) were added to refs/heads/release-1.0.2 by this push:
     new abe502dba19 [HUDI-9321] Fix unnecessary hoodie config conversion for 
ConfigUtils.getPayloadClass (#13167)
abe502dba19 is described below

commit abe502dba194959b7be4e294183e2fa45386d88a
Author: Danny Chan <[email protected]>
AuthorDate: Fri Apr 18 16:10:53 2025 +0800

    [HUDI-9321] Fix unnecessary hoodie config conversion for 
ConfigUtils.getPayloadClass (#13167)
    
    The construction of HoodieConfig is very costly, this would impact the 
regular read and also compaction.
    
    (cherry picked from commit d6c1272ee954496e4f3c91f2a428e430851beee8)
---
 .../org/apache/hudi/common/model/HoodieRecordPayload.java    | 12 ++++++++----
 .../main/java/org/apache/hudi/common/util/ConfigUtils.java   |  4 ++--
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git 
a/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieRecordPayload.java
 
b/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieRecordPayload.java
index 543562da375..6821cd7c198 100644
--- 
a/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieRecordPayload.java
+++ 
b/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieRecordPayload.java
@@ -160,11 +160,15 @@ public interface HoodieRecordPayload<T extends 
HoodieRecordPayload> extends Seri
   }
 
   static String getPayloadClassName(HoodieConfig config) {
+    return getPayloadClassName(config.getProps());
+  }
+
+  static String getPayloadClassName(Properties props) {
     String payloadClassName;
-    if (config.contains(PAYLOAD_CLASS_NAME)) {
-      payloadClassName = config.getString(PAYLOAD_CLASS_NAME);
-    } else if (config.contains("hoodie.datasource.write.payload.class")) {
-      payloadClassName = 
config.getString("hoodie.datasource.write.payload.class");
+    if (props.containsKey(PAYLOAD_CLASS_NAME.key())) {
+      payloadClassName = props.getProperty(PAYLOAD_CLASS_NAME.key());
+    } else if (props.containsKey("hoodie.datasource.write.payload.class")) {
+      payloadClassName = 
props.getProperty("hoodie.datasource.write.payload.class");
     } else {
       return HoodieTableConfig.DEFAULT_PAYLOAD_CLASS_NAME;
     }
diff --git 
a/hudi-common/src/main/java/org/apache/hudi/common/util/ConfigUtils.java 
b/hudi-common/src/main/java/org/apache/hudi/common/util/ConfigUtils.java
index 6d68abcea1c..49405f97489 100644
--- a/hudi-common/src/main/java/org/apache/hudi/common/util/ConfigUtils.java
+++ b/hudi-common/src/main/java/org/apache/hudi/common/util/ConfigUtils.java
@@ -92,8 +92,8 @@ public class ConfigUtils {
   /**
    * Get payload class.
    */
-  public static String getPayloadClass(Properties properties) {
-    return HoodieRecordPayload.getPayloadClassName(new 
HoodieConfig(properties));
+  public static String getPayloadClass(Properties props) {
+    return HoodieRecordPayload.getPayloadClassName(props);
   }
 
   public static List<String> split2List(String param) {

Reply via email to