yihua commented on code in PR #12829:
URL: https://github.com/apache/hudi/pull/12829#discussion_r1970604459


##########
hudi-common/src/main/java/org/apache/hudi/common/model/HoodieCommitMetadata.java:
##########
@@ -45,6 +45,13 @@
 
 /**
  * All the metadata that gets stored along with a commit.
+ * ******** IMPORTANT ********
+ * For any newly added/removed data fields, make sure we have the same 
definition in
+ * src/main/avro/HoodieCommitMetadata.avsc file!!!!!
+ *
+ * For any newly added subclass, make sure we add corresponding handler in
+ * 
org.apache.hudi.common.table.timeline.versioning.v2.CommitMetadataSerDeV2#deserialize
 method.
+ * ***************************

Review Comment:
   I assume this class is still need to commit metadata SerDe V1 which does not 
leverage the Avro schema, correct?



##########
hudi-common/src/main/java/org/apache/hudi/common/table/timeline/MetadataConversionUtils.java:
##########
@@ -364,18 +364,32 @@ public static <T extends SpecificRecordBase> T 
convertCommitMetadata(HoodieCommi
     if (hoodieCommitMetadata instanceof HoodieReplaceCommitMetadata) {
       return (T) convertReplaceCommitMetadata((HoodieReplaceCommitMetadata) 
hoodieCommitMetadata);
     }
-    hoodieCommitMetadata.getPartitionToWriteStats().remove(null);
     org.apache.hudi.avro.model.HoodieCommitMetadata avroMetaData = 
JsonUtils.getObjectMapper().convertValue(hoodieCommitMetadata, 
org.apache.hudi.avro.model.HoodieCommitMetadata.class);
     return (T) avroMetaData;
   }
 
+  /**
+   * Convert commit metadata from json to avro.
+   */
+  public static HoodieCommitMetadata 
convertCommitMetadataAvroToPojo(org.apache.hudi.avro.model.HoodieCommitMetadata 
hoodieCommitMetadata) {
+    hoodieCommitMetadata.getPartitionToWriteStats().remove(null);
+    return JsonUtils.getObjectMapper().convertValue(hoodieCommitMetadata, 
HoodieCommitMetadata.class);
+  }
+
   /**
    * Convert replacecommit metadata from json to avro.
    */
   private static org.apache.hudi.avro.model.HoodieReplaceCommitMetadata 
convertReplaceCommitMetadata(HoodieReplaceCommitMetadata replaceCommitMetadata) 
{
+    return JsonUtils.getObjectMapper().convertValue(replaceCommitMetadata, 
org.apache.hudi.avro.model.HoodieReplaceCommitMetadata.class);
+  }

Review Comment:
   ```suggestion
     /**
      * Convert replacecommit metadata from POJO to Avro.
      */
     private static org.apache.hudi.avro.model.HoodieReplaceCommitMetadata 
convertReplaceCommitMetadataToAvro(HoodieReplaceCommitMetadata 
replaceCommitMetadata) {
       return JsonUtils.getObjectMapper().convertValue(replaceCommitMetadata, 
org.apache.hudi.avro.model.HoodieReplaceCommitMetadata.class);
     }
   ```



##########
hudi-common/src/main/java/org/apache/hudi/common/model/HoodieCommitMetadata.java:
##########
@@ -45,6 +45,13 @@
 
 /**
  * All the metadata that gets stored along with a commit.
+ * ******** IMPORTANT ********
+ * For any newly added/removed data fields, make sure we have the same 
definition in
+ * src/main/avro/HoodieCommitMetadata.avsc file!!!!!
+ *
+ * For any newly added subclass, make sure we add corresponding handler in
+ * 
org.apache.hudi.common.table.timeline.versioning.v2.CommitMetadataSerDeV2#deserialize
 method.
+ * ***************************

Review Comment:
   If we could use Avro schema for JSON SerDe as well, it's better to remove 
this class completely.



##########
hudi-common/src/main/java/org/apache/hudi/common/table/timeline/MetadataConversionUtils.java:
##########
@@ -364,18 +364,32 @@ public static <T extends SpecificRecordBase> T 
convertCommitMetadata(HoodieCommi
     if (hoodieCommitMetadata instanceof HoodieReplaceCommitMetadata) {
       return (T) convertReplaceCommitMetadata((HoodieReplaceCommitMetadata) 
hoodieCommitMetadata);
     }
-    hoodieCommitMetadata.getPartitionToWriteStats().remove(null);
     org.apache.hudi.avro.model.HoodieCommitMetadata avroMetaData = 
JsonUtils.getObjectMapper().convertValue(hoodieCommitMetadata, 
org.apache.hudi.avro.model.HoodieCommitMetadata.class);
     return (T) avroMetaData;
   }
 
+  /**
+   * Convert commit metadata from json to avro.
+   */
+  public static HoodieCommitMetadata 
convertCommitMetadataAvroToPojo(org.apache.hudi.avro.model.HoodieCommitMetadata 
hoodieCommitMetadata) {
+    hoodieCommitMetadata.getPartitionToWriteStats().remove(null);
+    return JsonUtils.getObjectMapper().convertValue(hoodieCommitMetadata, 
HoodieCommitMetadata.class);
+  }
+
   /**
    * Convert replacecommit metadata from json to avro.
    */
   private static org.apache.hudi.avro.model.HoodieReplaceCommitMetadata 
convertReplaceCommitMetadata(HoodieReplaceCommitMetadata replaceCommitMetadata) 
{
+    return JsonUtils.getObjectMapper().convertValue(replaceCommitMetadata, 
org.apache.hudi.avro.model.HoodieReplaceCommitMetadata.class);
+  }
+
+  /**
+   * Convert replacecommit metadata from json to avro.
+   */
+  public static HoodieReplaceCommitMetadata 
convertReplaceCommitMetadataAvroToPojo(org.apache.hudi.avro.model.HoodieReplaceCommitMetadata
 replaceCommitMetadata) {

Review Comment:
   ```suggestion
     /**
      * Convert replacecommit metadata from Avro to POJO.
      */
     public static HoodieReplaceCommitMetadata 
convertReplaceCommitMetadataToPojo(org.apache.hudi.avro.model.HoodieReplaceCommitMetadata
 replaceCommitMetadata) {
   ```



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