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);
}
}