geserdugarov commented on code in PR #12245:
URL: https://github.com/apache/hudi/pull/12245#discussion_r1841741140


##########
hudi-client/hudi-client-common/src/main/java/org/apache/hudi/table/BucketIndexBulkInsertPartitioner.java:
##########
@@ -59,12 +62,19 @@ public BucketIndexBulkInsertPartitioner(HoodieTable table, 
String sortString, bo
       this.sortColumnNames = null;
     }
     this.preserveHoodieMetadata = preserveHoodieMetadata;
+    // Bulk insert into COW table with bucket index is allowed only once, 
otherwise AppendHadleFactory will produce MOR log files
+    this.isAppendAllowed = 
!table.getConfig().getTableType().equals(HoodieTableType.COPY_ON_WRITE);
   }
 
   @Override
   public Option<WriteHandleFactory> getWriteHandleFactory(int idx) {
-    return doAppend.get(idx) ? Option.of(new AppendHandleFactory()) :
-        Option.of(new 
SingleFileHandleCreateFactory(FSUtils.createNewFileId(getFileIdPfx(idx), 0), 
this.preserveHoodieMetadata));
+    if (!doAppend.get(idx)) {
+      return Option.of(new 
SingleFileHandleCreateFactory(FSUtils.createNewFileId(getFileIdPfx(idx), 0), 
this.preserveHoodieMetadata));
+    } else if (isAppendAllowed) {
+      return Option.of(new AppendHandleFactory());
+    } else {
+      throw new HoodieNotSupportedException("Bulk insert into COW table with 
bucket index is allowed only once, please, use upsert operation instead");

Review Comment:
   Check that overwrite is working properly, and fixed failed tests.



##########
hudi-client/hudi-client-common/src/main/java/org/apache/hudi/table/BucketIndexBulkInsertPartitioner.java:
##########
@@ -59,12 +62,19 @@ public BucketIndexBulkInsertPartitioner(HoodieTable table, 
String sortString, bo
       this.sortColumnNames = null;
     }
     this.preserveHoodieMetadata = preserveHoodieMetadata;
+    // Bulk insert into COW table with bucket index is allowed only once, 
otherwise AppendHadleFactory will produce MOR log files
+    this.isAppendAllowed = 
!table.getConfig().getTableType().equals(HoodieTableType.COPY_ON_WRITE);
   }
 
   @Override
   public Option<WriteHandleFactory> getWriteHandleFactory(int idx) {
-    return doAppend.get(idx) ? Option.of(new AppendHandleFactory()) :
-        Option.of(new 
SingleFileHandleCreateFactory(FSUtils.createNewFileId(getFileIdPfx(idx), 0), 
this.preserveHoodieMetadata));
+    if (!doAppend.get(idx)) {
+      return Option.of(new 
SingleFileHandleCreateFactory(FSUtils.createNewFileId(getFileIdPfx(idx), 0), 
this.preserveHoodieMetadata));
+    } else if (isAppendAllowed) {
+      return Option.of(new AppendHandleFactory());
+    } else {
+      throw new HoodieNotSupportedException("Bulk insert into COW table with 
bucket index is allowed only once, please, use upsert operation instead");

Review Comment:
   Checked that overwrite is working properly, and fixed failed tests.



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