Implementation:Apache Dolphinscheduler IWorkflowControlClient Recovery
| Knowledge Sources | |
|---|---|
| Domains | Distributed_Systems, Fault_Tolerance |
| Last Updated | 2026-02-10 00:00 GMT |
Overview
Concrete tool for recovering failed or suspended workflow instances using IWorkflowControlClient.triggerFromFailureTasks and triggerFromSuspendTasks RPC methods.
Description
IWorkflowControlClient provides two recovery methods: triggerFromFailureTasks(WorkflowInstanceRecoverFailureTasksRequest) delegates to WorkflowInstanceRecoverFailureTaskTrigger which re-queues failed tasks and their dependencies, and triggerFromSuspendTasks(WorkflowInstanceRecoverSuspendTasksRequest) delegates to WorkflowInstanceRecoverSuspendTaskTrigger which resumes suspended tasks. Both are @RpcMethod endpoints called via the standard RPC proxy mechanism. The server-side implementation in WorkflowControlClient handles the actual recovery logic.
Usage
Called during failover processing or manually by users. The request DTOs carry the workflowInstanceId identifying which instance to recover.
Code Reference
Source Location
- Repository: dolphinscheduler
- File: dolphinscheduler-extract/dolphinscheduler-extract-master/src/main/java/org/apache/dolphinscheduler/extract/master/IWorkflowControlClient.java (L57-61)
- File: dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/rpc/WorkflowControlClient.java (L122-148)
Signature
@RpcService
public interface IWorkflowControlClient {
// ... (trigger methods)
@RpcMethod
WorkflowInstanceRecoverFailureTasksResponse triggerFromFailureTasks(
WorkflowInstanceRecoverFailureTasksRequest request);
@RpcMethod
WorkflowInstanceRecoverSuspendTasksResponse triggerFromSuspendTasks(
WorkflowInstanceRecoverSuspendTasksRequest request);
}
Import
import org.apache.dolphinscheduler.extract.master.IWorkflowControlClient;
import org.apache.dolphinscheduler.extract.master.transportor.workflow.WorkflowInstanceRecoverFailureTasksRequest;
import org.apache.dolphinscheduler.extract.master.transportor.workflow.WorkflowInstanceRecoverSuspendTasksRequest;
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| workflowInstanceId | Integer | Yes | ID of the workflow instance to recover |
Outputs
| Name | Type | Description |
|---|---|---|
| RecoverFailureTasksResponse | DTO | Success/failure status of recovery |
| RecoverSuspendTasksResponse | DTO | Success/failure status of recovery |
Usage Examples
Recovering From Failed Tasks
IWorkflowControlClient client = Clients
.withService(IWorkflowControlClient.class)
.withHost(masterAddress);
WorkflowInstanceRecoverFailureTasksResponse response =
client.triggerFromFailureTasks(
WorkflowInstanceRecoverFailureTasksRequest.builder()
.workflowInstanceId(12345)
.build()
);
Recovering From Suspended Tasks
WorkflowInstanceRecoverSuspendTasksResponse response =
client.triggerFromSuspendTasks(
WorkflowInstanceRecoverSuspendTasksRequest.builder()
.workflowInstanceId(12345)
.build()
);