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 e04b3188e2 [HUDI-4505] Returns instead of throws if lock file exists 
for FileSystemBasedLockProvider (#6242)
e04b3188e2 is described below

commit e04b3188e2222465eabed71ba19342cb92d10963
Author: Danny Chan <[email protected]>
AuthorDate: Fri Jul 29 23:32:19 2022 +0800

    [HUDI-4505] Returns instead of throws if lock file exists for 
FileSystemBasedLockProvider (#6242)
    
    To avoid unnecessary exception throws
---
 .../transaction/lock/FileSystemBasedLockProvider.java     | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/FileSystemBasedLockProvider.java
 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/FileSystemBasedLockProvider.java
index 96a42e8409..4135ef9acd 100644
--- 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/FileSystemBasedLockProvider.java
+++ 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/transaction/lock/FileSystemBasedLockProvider.java
@@ -54,8 +54,8 @@ public class FileSystemBasedLockProvider implements 
LockProvider<String>, Serial
   private static final String LOCK_FILE_NAME = "lock";
 
   private final int lockTimeoutMinutes;
-  private transient FileSystem fs;
-  private transient Path lockFile;
+  private final transient FileSystem fs;
+  private final transient Path lockFile;
   protected LockConfiguration lockConfiguration;
 
   public FileSystemBasedLockProvider(final LockConfiguration 
lockConfiguration, final Configuration configuration) {
@@ -87,8 +87,13 @@ public class FileSystemBasedLockProvider implements 
LockProvider<String>, Serial
     try {
       synchronized (LOCK_FILE_NAME) {
         // Check whether lock is already expired, if so try to delete lock file
-        if (fs.exists(this.lockFile) && checkIfExpired()) {
-          fs.delete(this.lockFile, true);
+        if (fs.exists(this.lockFile)) {
+          if (checkIfExpired()) {
+            fs.delete(this.lockFile, true);
+            LOG.warn("Delete expired lock file: " + this.lockFile);
+          } else {
+            return false;
+          }
         }
         acquireLock();
         return fs.exists(this.lockFile);
@@ -123,7 +128,7 @@ public class FileSystemBasedLockProvider implements 
LockProvider<String>, Serial
     }
     try {
       long modificationTime = 
fs.getFileStatus(this.lockFile).getModificationTime();
-      if (System.currentTimeMillis() - modificationTime > lockTimeoutMinutes * 
60 * 1000) {
+      if (System.currentTimeMillis() - modificationTime > lockTimeoutMinutes * 
60 * 1000L) {
         return true;
       }
     } catch (IOException | HoodieIOException e) {

Reply via email to