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