This is an automated email from the ASF dual-hosted git repository. xxubai pushed a commit to branch 0.9.x in repository https://gitbox.apache.org/repos/asf/amoro.git
commit 4463cc086a609c3537d689587f1df46aff93f564 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]> (cherry picked from commit 9f2a45e88ca97864b6de0bbb843e3ae9dd201577) --- .../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); }
