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

  1. Either remove the evaluatorType key entirely (defaults to 'javascript') or set it to a valid value like 'javascript', 'graaljs', or 'python'.
  2. If evaluatorType is dynamically set, ensure the expression always produces a non-blank value or omit the key.
  3. 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

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


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/e85f169320f7926f. Report an issue: GitHub.