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

vinoyang 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 97864a4  [HUDI-1637] Avoid to rename for bucket update when there is 
only one flush action during a checkpoint (#2599)
97864a4 is described below

commit 97864a48c1979ca2b3f0579cf26bba81fba7e46c
Author: Danny Chan <[email protected]>
AuthorDate: Thu Feb 25 10:21:27 2021 +0800

    [HUDI-1637] Avoid to rename for bucket update when there is only one flush 
action during a checkpoint (#2599)
    
    Some of the object storages do not have strong read-after-write
    consistency, we should promote to remove the rename operations in the
    future.
---
 .../src/main/java/org/apache/hudi/io/FlinkMergeHandle.java       | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git 
a/hudi-client/hudi-flink-client/src/main/java/org/apache/hudi/io/FlinkMergeHandle.java
 
b/hudi-client/hudi-flink-client/src/main/java/org/apache/hudi/io/FlinkMergeHandle.java
index cfd1729..3d33b2e 100644
--- 
a/hudi-client/hudi-flink-client/src/main/java/org/apache/hudi/io/FlinkMergeHandle.java
+++ 
b/hudi-client/hudi-flink-client/src/main/java/org/apache/hudi/io/FlinkMergeHandle.java
@@ -94,7 +94,8 @@ public class FlinkMergeHandle<T extends HoodieRecordPayload, 
I, K, O>
    * Use the fileId + "-" + rollNumber as the new fileId of a mini-batch write.
    */
   protected String generatesDataFileName() {
-    return FSUtils.makeDataFileName(instantTime, writeToken, fileId + "-" + 
rollNumber, hoodieTable.getBaseFileExtension());
+    final String fileID = this.needBootStrap ? fileId : fileId + "-" + 
rollNumber;
+    return FSUtils.makeDataFileName(instantTime, writeToken, fileID, 
hoodieTable.getBaseFileExtension());
   }
 
   public boolean isNeedBootStrap() {
@@ -178,6 +179,12 @@ public class FlinkMergeHandle<T extends 
HoodieRecordPayload, I, K, O>
   }
 
   public void finishWrite() {
+    // The file visibility should be kept by the configured ConsistencyGuard 
instance.
+    if (rolloverPaths.size() == 1) {
+      // only one flush action, no need to roll over
+      return;
+    }
+
     for (int i = 0; i < rolloverPaths.size() - 1; i++) {
       Path path = rolloverPaths.get(i);
       try {

Reply via email to