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

jinsongzhou 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 292111f6e [AMORO-3111]Avoid optimization state blocking in planning 
(#3115)
292111f6e is described below

commit 292111f6e728ff9559fce39145b029c357358890
Author: rfyu <[email protected]>
AuthorDate: Sat Sep 14 16:42:54 2024 +0800

    [AMORO-3111]Avoid optimization state blocking in planning (#3115)
    
    * Avoid optimization state blocking in planning
    
    * modify the optimizing status in memory
    
    * fix conflict and rollback configuration
---
 .../amoro/server/optimizing/OptimizingQueue.java   |  3 +++
 .../apache/amoro/server/table/TableRuntime.java    | 22 +++++++++++++++-------
 2 files changed, 18 insertions(+), 7 deletions(-)

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 47a3f401e..bd1e5023a 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
@@ -225,6 +225,9 @@ public class OptimizingQueue extends PersistentBase {
     CompletableFuture.supplyAsync(() -> planInternal(tableRuntime), 
planExecutor)
         .whenComplete(
             (process, throwable) -> {
+              if (throwable != null) {
+                LOG.error("Failed to plan table {}", 
tableRuntime.getTableIdentifier(), throwable);
+              }
               long currentTime = System.currentTimeMillis();
               scheduleLock.lock();
               try {
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/table/TableRuntime.java 
b/amoro-ams/src/main/java/org/apache/amoro/server/table/TableRuntime.java
index e70adfa80..475ab28f1 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/table/TableRuntime.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/table/TableRuntime.java
@@ -188,13 +188,21 @@ public class TableRuntime extends StatedPersistentBase {
   }
 
   public void planFailed() {
-    invokeConsistency(
-        () -> {
-          OptimizingStatus originalStatus = optimizingStatus;
-          updateOptimizingStatus(OptimizingStatus.PENDING);
-          persistUpdatingRuntime();
-          tableHandler.handleTableChanged(this, originalStatus);
-        });
+    try {
+      invokeConsistency(
+          () -> {
+            OptimizingStatus originalStatus = optimizingStatus;
+            updateOptimizingStatus(OptimizingStatus.PENDING);
+            persistUpdatingRuntime();
+            tableHandler.handleTableChanged(this, originalStatus);
+          });
+    } catch (Exception e) {
+      OptimizingStatus originalStatus = optimizingStatus;
+      updateOptimizingStatus(OptimizingStatus.PENDING);
+      LOG.warn(
+          "Persistent database failed, only the optimizing state in the memory 
was changed.", e);
+      tableHandler.handleTableChanged(this, originalStatus);
+    }
   }
 
   public void beginProcess(OptimizingProcess optimizingProcess) {

Reply via email to