apache/dolphinscheduler · error · IllegalArgumentException
Cannot parse task parameters:
Error message
Cannot parse task parameters:
What it means
TaskPluginManager.parseTaskParameters throws IllegalArgumentException when taskChannel.parseParameters(taskParams) returns null for the given type. The task plugin could not deserialize the JSON parameter string into its parameter object.
Solutions
- Validate taskParams is well-formed JSON matching the plugin's parameter schema
- Print/inspect the full message: it includes both params and the task type
- Re-save the task definition in the UI to regenerate canonical params
- Check for version migration issues between the workflow definition and the installed plugin
- Ensure the correct taskType is passed so the right channel parses the params
Defensive patterns
Strategy: validation
Validate before calling
// before parsing
ObjectNode params = new ObjectMapper().readTree(taskParams);
if (params == null || !params.isObject() || params.size() == 0) {
throw new IllegalArgumentException("Invalid task params JSON: " + taskParams);
}
AbstractParameters p = TaskPluginManager.parseTaskParameters(taskType, taskParams); Try / catch
try {
AbstractParameters params = TaskPluginManager.parseTaskParameters(taskType, taskParams);
} catch (IllegalArgumentException e) {
log.error("Param parse failed: {}", e.getMessage());
// message includes both params and type — compare against plugin schema
} Prevention
- Validate taskParams JSON against the plugin's parameter schema before submit
- Regenerate task definitions via the UI after upgrades (schema drift)
- Never hand-edit taskParams without validating JSON
- Ensure taskType matches the params structure being passed
When it happens
Trigger: parseParameters returns null — taskParams JSON does not match the plugin's expected parameter class (wrong/missing fields, non-JSON string, empty params), or getTaskChannel resolved a plugin whose parser rejects the payload.
Common situations: Task params edited by hand with invalid JSON; workflow definitions migrated across versions where the parameter schema changed; passing a params string of one task type to another type's channel.
Understand the failure class
Background: "failed to unmarshal" / json.Unmarshal errors: why parsing a response into a Go struct fails and how to fix it — this error's family across 23 libraries.
Related errors
AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06).
Data as JSON: /api/errors/606d4e4b6f29bf04.
Report an issue: GitHub.
Appendix: source
Thrown at dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/TaskPluginManager.java:98
public static boolean checkTaskParameters(String taskType, String taskParams) {
AbstractParameters abstractParameters = parseTaskParameters(taskType, taskParams);
return abstractParameters.checkParameters();
}
/**
* Parse the task parameters
* @param taskType task type, cannot be null
* @param taskParams task parameters
* @return AbstractParameters
* @throws IllegalArgumentException if the TaskChannel is not found
* @throws IllegalArgumentException if cannot deserialize the task parameters
*/
public static AbstractParameters parseTaskParameters(String taskType, String taskParams) {
checkNotNull(taskType, "taskType cannot be null");
TaskChannel taskChannel = getTaskChannel(taskType);
AbstractParameters abstractParameters = taskChannel.parseParameters(taskParams);
if (abstractParameters == null) {
throw new IllegalArgumentException("Cannot parse task parameters: " + taskParams + " for : " + taskType);
}
return abstractParameters;
}
}
View on GitHub (pinned to 02eac45a1b)