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

zhoujinsong 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 9f2a45e88 [AMORO-4139] Delete resource and optimizer atomically when 
releasing optimizer (#4310)
9f2a45e88 is described below

commit 9f2a45e88ca97864b6de0bbb843e3ae9dd201577
Author: seoyoniee <[email protected]>
AuthorDate: Tue Aug 11 21:01:49 2026 +0900

    [AMORO-4139] Delete resource and optimizer atomically when releasing 
optimizer (#4310)
    
    [AMORO-4139] Delete resource and optimizer atomically when releasing an 
optimizer
    
    Co-authored-by: seoyoniee <[email protected]>
    Co-authored-by: ConradJam <[email protected]>
    Co-authored-by: ZhouJinsong <[email protected]>
---
 .../dashboard/controller/OptimizerController.java      |  3 +--
 .../amoro/server/resource/DefaultOptimizerManager.java | 18 +++++++++++-------
 .../apache/amoro/server/resource/OptimizerManager.java |  2 +-
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerController.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerController.java
index 108f3c8c9..071f7c58b 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerController.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerController.java
@@ -70,8 +70,7 @@ public class OptimizerController {
         resource.getContainerName());
     ((AbstractOptimizerContainer) rc).releaseResource(resource);
 
-    optimizerManager.deleteResource(resourceId);
-    optimizerManager.deleteOptimizer(resource.getGroupName(), resourceId);
+    optimizerManager.deleteOptimizerAndResource(resource.getGroupName(), 
resourceId);
     ctx.json(OkResponse.of("Success to release optimizer"));
   }
 
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/resource/DefaultOptimizerManager.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/resource/DefaultOptimizerManager.java
index 42cd108c1..b916e319c 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/resource/DefaultOptimizerManager.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/resource/DefaultOptimizerManager.java
@@ -74,13 +74,17 @@ public class DefaultOptimizerManager extends PersistentBase 
implements Optimizer
   }
 
   @Override
-  public void deleteOptimizer(String group, String resourceId) {
-    List<OptimizerInstance> deleteOptimizers =
-        getAs(OptimizerMapper.class, mapper -> 
mapper.selectByResourceId(resourceId));
-    deleteOptimizers.forEach(
-        optimizer -> {
-          String token = optimizer.getToken();
-          unregisterOptimizer(token);
+  public void deleteOptimizerAndResource(String group, String resourceId) {
+    doAsTransaction(
+        () -> deleteResource(resourceId),
+        () -> {
+          List<OptimizerInstance> deleteOptimizers =
+              getAs(OptimizerMapper.class, mapper -> 
mapper.selectByResourceId(resourceId));
+          deleteOptimizers.forEach(
+              optimizer -> {
+                String token = optimizer.getToken();
+                unregisterOptimizer(token);
+              });
         });
   }
 
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/resource/OptimizerManager.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/resource/OptimizerManager.java
index a194ac256..8e1dc7be3 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/resource/OptimizerManager.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/resource/OptimizerManager.java
@@ -27,7 +27,7 @@ public interface OptimizerManager extends ResourceManager {
 
   List<OptimizerInstance> listOptimizers(String groupName);
 
-  void deleteOptimizer(String groupName, String resourceId);
+  void deleteOptimizerAndResource(String groupName, String resourceId);
 
   boolean canDeleteResourceGroup(String name);
 }

Reply via email to