You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by GitBox <gi...@apache.org> on 2023/01/04 01:10:41 UTC

[GitHub] [hudi] nsivabalan commented on a diff in pull request #7440: [HUDI-5377] Write call stack information to lock file

nsivabalan commented on code in PR #7440:
URL: https://github.com/apache/hudi/pull/7440#discussion_r1061068482


##########
hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/FileSystemBasedLockProvider.java:
##########
@@ -139,7 +152,32 @@ private boolean checkIfExpired() {
 
   private void acquireLock() {
     try {
-      fs.create(this.lockFile, false).close();
+      if (!fs.exists(this.lockFile)) {
+        FSDataOutputStream fos = fs.create(this.lockFile, false);
+        initLockInfo();
+        fos.writeBytes(lockInfo.toString());

Review Comment:
   May I know if you guys tested against both hdfs and S3.
   
   Atleast in S3, not sure if this works across all race conditions.
   
   what if two processes exactly checks fs.exists() concurrently and both detects that file does not exist and goes ahead and creates the file. both creation could succeed. So, how do we ensure only one of them succeed.
   
   Should we compare the file contents after creating. so that the current writer which wrote the file will exactly know that it owns the lock if file contents match. 
   



-- 
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: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org