boneanxs commented on code in PR #10886:
URL: https://github.com/apache/hudi/pull/10886#discussion_r1568323048


##########
hudi-common/src/main/java/org/apache/hudi/common/model/HoodiePartitionMetadata.java:
##########
@@ -92,11 +92,12 @@ public int getPartitionDepth() {
 
   /**
    * Write the metadata safely into partition atomically.
+   * To avoid concurrent write into the same partition (for example in 
speculative case),
+   * please make sure writeToken is unique.
    */
-  public void trySave(int taskPartitionId) {
+  public void trySave(String writeToken) throws IOException {

Review Comment:
   I see, we don't need UUID, after using `RetryHelper`, this issue should be 
fixed:
   
   ```java
   metafileExists = fs.exists(metaPath);
         if (!metafileExists) {
           // write to temporary file
           writeMetafile(tmpMetaPath);
           // move to actual path
           fs.rename(tmpMetaPath, metaPath);
         }
   ```
   If 2 threads concurrently creating tmpMetaPath, after one thread renamed 
succeed, and another one failed because of tmpMetaPath missing, it will retry 
and return directly since `metafileExists` becomes true



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