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

wombatukun 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 39ae177baec1 perf: optimize removeCommitMetadata method in 
HoodieCDCLogger (#17669)
39ae177baec1 is described below

commit 39ae177baec1914d9849e27566b3de14254a519f
Author: Sergey Troshkov <[email protected]>
AuthorDate: Tue Dec 23 15:05:03 2025 +0700

    perf: optimize removeCommitMetadata method in HoodieCDCLogger (#17669)
---
 .../main/java/org/apache/hudi/io/HoodieCDCLogger.java   | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieCDCLogger.java
 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieCDCLogger.java
index 4e7a65ab3dd9..a833ac863da3 100644
--- 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieCDCLogger.java
+++ 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieCDCLogger.java
@@ -18,7 +18,6 @@
 
 package org.apache.hudi.io;
 
-import org.apache.hudi.avro.HoodieAvroUtils;
 import org.apache.hudi.common.model.HoodieAvroIndexedRecord;
 import org.apache.hudi.common.model.HoodieAvroPayload;
 import org.apache.hudi.common.model.HoodieRecord;
@@ -45,6 +44,7 @@ import org.apache.hudi.exception.HoodieUpsertException;
 import org.apache.hudi.storage.HoodieStorage;
 import org.apache.hudi.storage.StoragePath;
 
+import org.apache.avro.Schema;
 import org.apache.avro.generic.GenericData;
 import org.apache.avro.generic.GenericRecord;
 import org.apache.avro.generic.IndexedRecord;
@@ -275,7 +275,20 @@ public class HoodieCDCLogger implements Closeable {
   }
 
   private GenericRecord removeCommitMetadata(GenericRecord record) {
-    return record == null ? null : 
HoodieAvroUtils.rewriteRecordWithNewSchema(record, dataSchema.toAvroSchema(), 
Collections.emptyMap());
+    return record == null ? null : getRecordWithoutMetadata(record);
+  }
+
+  private GenericRecord getRecordWithoutMetadata(GenericRecord record) {
+    Schema avroSchema = dataSchema.getAvroSchema();
+    if (record.getSchema().getFields().size() == 
avroSchema.getFields().size()) {
+      return record;
+    } else {
+      GenericData.Record rec = new GenericData.Record(avroSchema);
+      for (Schema.Field field : avroSchema.getFields()) {
+        rec.put(field.pos(), record.get(field.name()));
+      }
+      return rec;
+    }
   }
 
   // -------------------------------------------------------------------------

Reply via email to