conductor-oss/conductor · error · TerminateWorkflowException
Empty 'evaluatorType' in INLINE task's input parameters. A n
Error message
Empty 'evaluatorType' in INLINE task's input parameters. A non-empty String value must be provided.
What it means
Thrown by Inline.checkEvaluatorType() when the evaluatorType input parameter is blank (null, empty, or whitespace-only). Although evaluatorType is optional and defaults to 'javascript' when the key is entirely absent from the input map (checked at line 67), if the key IS present but contains a blank string, this check fires. The distinction: absent key -> default 'javascript'; present-but-blank -> error. This prevents ambiguous evaluator selection.
Source
Thrown at core/src/main/java/com/netflix/conductor/core/execution/tasks/Inline.java:104
// TerminateWorkflowException is thrown when the script evaluation fails
// Retry will result in the same error, so FAILED_WITH_TERMINAL_ERROR status is used.
task.setStatus(
e instanceof TerminateWorkflowException
? TaskModel.Status.FAILED_WITH_TERMINAL_ERROR
: TaskModel.Status.FAILED);
task.setReasonForIncompletion(errorMessage);
task.addOutput("error", errorMessage);
}
return true;
}
private void checkEvaluatorType(String evaluatorType) {
// evaluatorType is now optional with "javascript" as default, but must not be blank if
// provided
if (StringUtils.isBlank(evaluatorType)) {
LOGGER.error("Empty {} in INLINE task. ", QUERY_EVALUATOR_TYPE);
throw new TerminateWorkflowException(
"Empty '"
+ QUERY_EVALUATOR_TYPE
+ "' in INLINE task's input parameters. A non-empty String value must be provided.");
}
if (evaluators.get(evaluatorType) == null) {
LOGGER.error("Evaluator {} for INLINE task not registered", evaluatorType);
throw new TerminateWorkflowException(
"Unknown evaluator '" + evaluatorType + "' in INLINE task.");
}
}
private void checkExpression(String expression) {
if (StringUtils.isBlank(expression)) {
LOGGER.error("Empty {} in INLINE task. ", QUERY_EXPRESSION_PARAMETER);
throw new TerminateWorkflowException(
"Empty '"
+ QUERY_EXPRESSION_PARAMETER
+ "' in Inline task's input parameters. A non-empty String value must be provided.");View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Either remove the evaluatorType key entirely (defaults to 'javascript') or set it to a valid value like 'javascript', 'graaljs', or 'python'.
- If evaluatorType is dynamically set, ensure the expression always produces a non-blank value or omit the key.
- Validate the INLINE task's inputParameters in the workflow definition before registering.
Example fix
// before
"inputParameters": {
"evaluatorType": "",
"expression": "return 1 + 1"
}
// after — option 1: remove evaluatorType (defaults to javascript)
"inputParameters": {
"expression": "return 1 + 1"
}
// after — option 2: set explicitly
"inputParameters": {
"evaluatorType": "javascript",
"expression": "return 1 + 1"
} Defensive patterns
Strategy: validation
Validate before calling
// Validate evaluatorType before INLINE task execution
String evaluatorType = (String) task.getInputData().get("evaluatorType");
if (evaluatorType != null && StringUtils.isBlank(evaluatorType)) {
throw new IllegalStateException(
"evaluatorType is present but blank — remove it or set to 'javascript'");
} Prevention
- Either omit evaluatorType (defaults to 'javascript') or set it to a valid non-blank value.
- Validate INLINE task input parameters in the workflow definition.
- Avoid dynamically computing evaluatorType with expressions that may produce empty strings.
When it happens
Trigger: An INLINE task has evaluatorType set to an empty string "" or whitespace " " in its inputParameters. A template or expression that resolves evaluatorType to an empty string at runtime.
Common situations: Workflow definition template includes evaluatorType but the value is left empty by mistake. A conditional expression for evaluatorType evaluates to empty under certain input. Copy-paste from a partial example where evaluatorType was not filled in.
Related errors
- Unknown evaluator '%s' in INLINE task.
- Input has to be a JSON object: %s
- No evaluator registered for type: %s
- Execution not found: ${executionId}
- inspectPlan: agentConfig is required
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/e85f169320f7926f.
Report an issue: GitHub.