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) {