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