linliu-code commented on code in PR #13334:
URL: https://github.com/apache/hudi/pull/13334#discussion_r2128945213


##########
hudi-common/src/main/java/org/apache/hudi/common/util/HoodieRecordUtils.java:
##########
@@ -75,21 +85,58 @@ public static HoodieRecordMerger loadRecordMerger(String 
mergerClass) {
    * Instantiate a given class with a record merge.
    */
   public static HoodieRecordMerger createRecordMerger(String basePath, 
EngineType engineType,
-                                                      List<String> 
mergerClassList, String recordMergerStrategy) {
-    if (mergerClassList.isEmpty() || 
HoodieTableMetadata.isMetadataTable(basePath)) {
+                                                      List<String> 
mergerClassList,
+                                                      String 
recordMergerStrategy,
+                                                      Option<String> 
payloadClassOpt) {
+    if (HoodieTableMetadata.isMetadataTable(basePath)) {
       return HoodieAvroRecordMerger.INSTANCE;
+    } else if (mergerClassList.isEmpty()) {
+      // No merger class is given, we fall back to use Avro based mergers.
+      return createValidRecordMerger(engineType, "", recordMergerStrategy, 
payloadClassOpt)
+          .orElse(HoodieAvroRecordMerger.INSTANCE);
     } else {
       return createValidRecordMerger(engineType, mergerClassList, 
recordMergerStrategy)
           .orElse(HoodieAvroRecordMerger.INSTANCE);
     }
   }
 
   public static Option<HoodieRecordMerger> createValidRecordMerger(EngineType 
engineType,
-                                                                   String 
mergerImpls, String recordMergerStrategy) {
-    if 
(recordMergerStrategy.equals(HoodieRecordMerger.PAYLOAD_BASED_MERGE_STRATEGY_UUID))
 {
-      return Option.of(HoodieAvroRecordMerger.INSTANCE);
+                                                                   String 
mergerImpls,
+                                                                   String 
recordMergerStrategy,
+                                                                   
Option<String> payloadClassOpt) {
+    String payloadClass = payloadClassOpt.get();
+    // Payload based strategy and payload class is given.
+    if (null != recordMergerStrategy

Review Comment:
   To deprecate payload, we don't care about the merge mode. That is, if a 
given payload class is given, we replace it with corresponding merger class. 
`HoodieTableConfig.inferRecordMergeModeFromPayloadClass` returns one of the 
three merge modes, which seems not related to our problem since no matter what 
merge mode is produced, the merger class is only determined by the payload 
class. Please advice on why we need to worry about merge mode.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to