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