diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/OptimizingQueue.java b/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/OptimizingQueue.java index ec207705c7..964d27c7b8 100644 --- a/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/OptimizingQueue.java +++ b/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/OptimizingQueue.java @@ -500,6 +500,7 @@ public TableOptimizingProcess( if (processState.getToSequence() != null) { toSequence = processState.getToSequence(); } + this.status = processMeta.getStatus(); if (this.status != ProcessStatus.KILLED) { tableRuntime.recover(this); } diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableRuntime.java b/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableRuntime.java index c1506218d2..7725c3ec0c 100644 --- a/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableRuntime.java +++ b/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableRuntime.java @@ -32,6 +32,7 @@ import org.apache.amoro.optimizing.plan.AbstractOptimizingEvaluator; import org.apache.amoro.process.AmoroProcess; import org.apache.amoro.process.ProcessFactory; +import org.apache.amoro.process.ProcessStatus; import org.apache.amoro.process.TableProcessStore; import org.apache.amoro.server.AmoroServiceConstants; import org.apache.amoro.server.optimizing.OptimizingProcess; @@ -118,6 +119,9 @@ public void recover(OptimizingProcess optimizingProcess) { throw new IllegalStateException("Table runtime and processing are not matched!"); } this.optimizingProcess = optimizingProcess; + if (this.optimizingProcess.getStatus() == ProcessStatus.SUCCESS) { + completeProcess(true); + } } @Override