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

taowang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/amoro.git


The following commit(s) were added to refs/heads/master by this push:
     new 9bfe6094d [AMORO-3410]  cancel renew procedure after releasing block 
(#3421)
9bfe6094d is described below

commit 9bfe6094d9603053e07961d9836b6f3549e30f1f
Author: Wang Tao <[email protected]>
AuthorDate: Mon Feb 10 19:58:05 2025 +0800

    [AMORO-3410]  cancel renew procedure after releasing block (#3421)
    
    * issue_3410 cancel renew procedure after releasing block
    
    * fix checkstyle
---
 .../org/apache/amoro/table/blocker/BasicTableBlockerManager.java    | 5 +++++
 .../main/java/org/apache/amoro/table/blocker/RenewableBlocker.java  | 6 ++++++
 .../apache/amoro/table/blocker/TestBasicTableBlockerManager.java    | 2 ++
 3 files changed, 13 insertions(+)

diff --git 
a/amoro-format-iceberg/src/main/java/org/apache/amoro/table/blocker/BasicTableBlockerManager.java
 
b/amoro-format-iceberg/src/main/java/org/apache/amoro/table/blocker/BasicTableBlockerManager.java
index 8db4e299f..924c4ed45 100644
--- 
a/amoro-format-iceberg/src/main/java/org/apache/amoro/table/blocker/BasicTableBlockerManager.java
+++ 
b/amoro-format-iceberg/src/main/java/org/apache/amoro/table/blocker/BasicTableBlockerManager.java
@@ -68,6 +68,11 @@ public class BasicTableBlockerManager implements 
TableBlockerManager {
     } catch (TException e) {
       throw new IllegalStateException(
           "failed to release " + tableIdentifier + "'s blocker " + 
blocker.blockerId(), e);
+    } finally {
+      // Regardless of whether the lock was successfully released, we will no 
longer renew the lock.
+      if (blocker instanceof RenewableBlocker) {
+        ((RenewableBlocker) blocker).cancelRenew();
+      }
     }
   }
 
diff --git 
a/amoro-format-iceberg/src/main/java/org/apache/amoro/table/blocker/RenewableBlocker.java
 
b/amoro-format-iceberg/src/main/java/org/apache/amoro/table/blocker/RenewableBlocker.java
index 3f72e0e68..9bcdc97e0 100644
--- 
a/amoro-format-iceberg/src/main/java/org/apache/amoro/table/blocker/RenewableBlocker.java
+++ 
b/amoro-format-iceberg/src/main/java/org/apache/amoro/table/blocker/RenewableBlocker.java
@@ -21,6 +21,7 @@ package org.apache.amoro.table.blocker;
 import org.apache.amoro.AmsClient;
 import org.apache.amoro.api.BlockableOperation;
 import org.apache.amoro.api.NoSuchObjectException;
+import 
org.apache.amoro.shade.guava32.com.google.common.annotations.VisibleForTesting;
 import org.apache.amoro.shade.guava32.com.google.common.base.Preconditions;
 import 
org.apache.amoro.shade.guava32.com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.apache.amoro.table.TableIdentifier;
@@ -103,6 +104,11 @@ public class RenewableBlocker implements Blocker {
             .scheduleAtFixedRate(this::doRenew, interval, interval, 
TimeUnit.MILLISECONDS);
   }
 
+  @VisibleForTesting
+  public ScheduledFuture getRenewTaskFuture() {
+    return this.renewTaskFuture;
+  }
+
   private void doRenew() {
     try {
       this.expirationTime =
diff --git 
a/amoro-format-iceberg/src/test/java/org/apache/amoro/table/blocker/TestBasicTableBlockerManager.java
 
b/amoro-format-iceberg/src/test/java/org/apache/amoro/table/blocker/TestBasicTableBlockerManager.java
index 3d9db1705..267dbe6f9 100644
--- 
a/amoro-format-iceberg/src/test/java/org/apache/amoro/table/blocker/TestBasicTableBlockerManager.java
+++ 
b/amoro-format-iceberg/src/test/java/org/apache/amoro/table/blocker/TestBasicTableBlockerManager.java
@@ -54,7 +54,9 @@ public class TestBasicTableBlockerManager extends 
TableTestBase {
     BasicTableBlockerManager blockerManager = (BasicTableBlockerManager) 
tableBlockerManager;
 
     Blocker block = blockerManager.block(OPERATIONS);
+    Assert.assertTrue(block instanceof RenewableBlocker);
 
     blockerManager.release(block);
+    Assert.assertTrue(((RenewableBlocker) block).getRenewTaskFuture() == null);
   }
 }

Reply via email to