This is an automated email from the ASF dual-hosted git repository.
danny0405 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 2dcdd311245 [HUDI-7421] Build HoodieDeltaWriteStat using
HoodieDeltaWriteStat#copy (#10870)
2dcdd311245 is described below
commit 2dcdd311245b38c0a9884338d6333212a730d310
Author: wombatu-kun <[email protected]>
AuthorDate: Mon Mar 18 07:32:41 2024 +0700
[HUDI-7421] Build HoodieDeltaWriteStat using HoodieDeltaWriteStat#copy
(#10870)
Co-authored-by: Vova Kolmakov <[email protected]>
---
.../org/apache/hudi/io/HoodieAppendHandle.java | 7 +-----
.../hudi/common/model/HoodieDeltaWriteStat.java | 14 ++++++++++++
.../common/model/TestHoodieDeltaWriteStat.java | 25 ++++++++++++++++++++++
3 files changed, 40 insertions(+), 6 deletions(-)
diff --git
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieAppendHandle.java
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieAppendHandle.java
index ffdb7c70a57..8d0eb2305e6 100644
---
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieAppendHandle.java
+++
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieAppendHandle.java
@@ -326,12 +326,7 @@ public class HoodieAppendHandle<T, I, K, O> extends
HoodieWriteHandle<T, I, K, O
private void initNewStatus() {
HoodieDeltaWriteStat prevStat = (HoodieDeltaWriteStat)
this.writeStatus.getStat();
// Make a new write status and copy basic fields over.
- HoodieDeltaWriteStat stat = new HoodieDeltaWriteStat();
- stat.setFileId(fileId);
- stat.setPartitionPath(partitionPath);
- stat.setPrevCommit(prevStat.getPrevCommit());
- stat.setBaseFile(prevStat.getBaseFile());
- stat.setLogFiles(new ArrayList<>(prevStat.getLogFiles()));
+ HoodieDeltaWriteStat stat = prevStat.copy();
this.writeStatus = (WriteStatus)
ReflectionUtils.loadClass(config.getWriteStatusClassName(),
hoodieTable.shouldTrackSuccessRecords(),
config.getWriteStatusFailureFraction());
diff --git
a/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieDeltaWriteStat.java
b/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieDeltaWriteStat.java
index 4fee7cdcb6e..0593e280e6f 100644
---
a/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieDeltaWriteStat.java
+++
b/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieDeltaWriteStat.java
@@ -94,6 +94,20 @@ public class HoodieDeltaWriteStat extends HoodieWriteStat {
return recordsStats;
}
+ /**
+ * Make a new write status and copy basic fields from current object
+ * @return copy write status
+ */
+ public HoodieDeltaWriteStat copy() {
+ HoodieDeltaWriteStat copy = new HoodieDeltaWriteStat();
+ copy.setFileId(getFileId());
+ copy.setPartitionPath(getPartitionPath());
+ copy.setPrevCommit(getPrevCommit());
+ copy.setBaseFile(getBaseFile());
+ copy.setLogFiles(new ArrayList<>(getLogFiles()));
+ return copy;
+ }
+
private static Map<String, HoodieColumnRangeMetadata<Comparable>>
mergeRecordsStats(
Map<String, HoodieColumnRangeMetadata<Comparable>> stats1,
Map<String, HoodieColumnRangeMetadata<Comparable>> stats2) {
diff --git
a/hudi-common/src/test/java/org/apache/hudi/common/model/TestHoodieDeltaWriteStat.java
b/hudi-common/src/test/java/org/apache/hudi/common/model/TestHoodieDeltaWriteStat.java
index b774e06cea6..a09bf539feb 100644
---
a/hudi-common/src/test/java/org/apache/hudi/common/model/TestHoodieDeltaWriteStat.java
+++
b/hudi-common/src/test/java/org/apache/hudi/common/model/TestHoodieDeltaWriteStat.java
@@ -23,6 +23,8 @@ import org.apache.hudi.common.table.HoodieTableConfig;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -49,4 +51,27 @@ public class TestHoodieDeltaWriteStat {
writeStat.setLogFiles(new ArrayList<>());
assertTrue(writeStat.getLogFiles().isEmpty());
}
+
+ @Test
+ void testGetHoodieDeltaWriteStatFromPreviousStat() {
+ HoodieDeltaWriteStat prevStat = createDeltaWriteStat("part", "fileId",
"888",
+ "base", Collections.singletonList("log1"));
+ HoodieDeltaWriteStat stat = prevStat.copy();
+ assertEquals(prevStat.getPartitionPath(), stat.getPartitionPath());
+ assertEquals(prevStat.getFileId(), stat.getFileId());
+ assertEquals(prevStat.getPrevCommit(), stat.getPrevCommit());
+ assertEquals(prevStat.getBaseFile(), stat.getBaseFile());
+ assertEquals(1, stat.getLogFiles().size());
+ assertEquals(prevStat.getLogFiles().get(0), stat.getLogFiles().get(0));
+ }
+
+ private HoodieDeltaWriteStat createDeltaWriteStat(String partition, String
fileId, String prevCommit, String baseFile, List<String> logFiles) {
+ HoodieDeltaWriteStat writeStat1 = new HoodieDeltaWriteStat();
+ writeStat1.setPartitionPath(partition);
+ writeStat1.setFileId(fileId);
+ writeStat1.setPrevCommit(prevCommit);
+ writeStat1.setBaseFile(baseFile);
+ writeStat1.setLogFiles(logFiles);
+ return writeStat1;
+ }
}