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

czy006 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 f5098f8d0 [hotfix][Process] Preserve recovery failure context (#4321)
f5098f8d0 is described below

commit f5098f8d0de4fa3f9900f1e69d89213cef959b93
Author: ConradJam <[email protected]>
AuthorDate: Tue Aug 18 10:31:30 2026 +0800

    [hotfix][Process] Preserve recovery failure context (#4321)
    
    [hotfix][Process] Include recovery context in markRecoverFailed message
    
    The fail_message persisted for an un-recoverable process only carried the
    raw cause text; processId/tableId/action/engine/externalIdentifier lived
    only in the server log. testRecoverProcessesShouldSkipFailedRecovery
    (added in f0cd29e80) already asserted the richer message but production
    code never implemented it, leaving the test red on a clean tree.
    
    Fix record: 
docs/fix-records/2026-08-15-fix-03-recover-fail-message-context.md
---
 .../java/org/apache/amoro/server/process/ProcessService.java | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/process/ProcessService.java 
b/amoro-ams/src/main/java/org/apache/amoro/server/process/ProcessService.java
index 957e3bf7b..e10d81845 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/process/ProcessService.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/process/ProcessService.java
@@ -309,11 +309,21 @@ public class ProcessService extends PersistentBase {
    */
   private void markRecoverFailed(DefaultTableProcessStore store, Throwable 
cause) {
     try {
+      String failMessage =
+          String.format(
+              "Failed to recover process: %s (processId=%s, tableId=%s, 
action=%s, engine=%s, "
+                  + "externalIdentifier=%s)",
+              cause.getMessage(),
+              store.getProcessId(),
+              store.getTableId(),
+              store.getAction(),
+              store.getExecutionEngine(),
+              store.getExternalProcessIdentifier());
       store.tryTransitState(
           ProcessStatus.FAILED,
           ProcessEvent.COMPLETE_FAILED,
           store.getExternalProcessIdentifier(),
-          "Failed to recover process: " + cause.getMessage(),
+          failMessage,
           store.getProcessParameters(),
           store.getSummary());
     } catch (Throwable t) {

Reply via email to