apache/seatunnel · error · IllegalArgumentException

Unsupported task group type

Error message

Unsupported task group type: ${type}

What it means

TaskGroupUtils.createTaskGroup dispatches on the configured TaskGroupType to instantiate the right queue-backed task group implementation. A type outside the supported set (e.g. not ALL_BLOCKING_QUEUE, INTERMEDIATE_BLOCKING_QUEUE, INTERMEDIATE_DISRUPTOR_QUEUE) throws this IllegalArgumentException.

Solutions

  1. Use a supported TaskGroupType (ALL_BLOCKING_QUEUE, INTERMEDIATE_BLOCKING_QUEUE, INTERMEDIATE_DISRUPTOR_QUEUE)
  2. Align all engine module versions so enum values match
  3. If you added a new TaskGroupType, add the corresponding case in TaskGroupUtils.createTaskGroup
  4. Check the code path that constructs TaskGroupLocation/type to see why an unsupported value was set

Example fix

// before
TaskGroupType type = TaskGroupType.CUSTOM_QUEUE;
taskGroup = TaskGroupUtils.createTaskGroup(loc, name, tasks, type); // throws
// after
TaskGroupType type = TaskGroupType.INTERMEDIATE_BLOCKING_QUEUE;
taskGroup = TaskGroupUtils.createTaskGroup(loc, name, tasks, type);
Defensive patterns

Strategy: type-guard

Validate before calling

if (type != TaskGroupType.ALL_BLOCKING_QUEUE && type != TaskGroupType.INTERMEDIATE_BLOCKING_QUEUE && type != TaskGroupType.INTERMEDIATE_DISRUPTOR_QUEUE) { throw new IllegalArgumentException("unsupported type: " + type); }

Type guard

boolean isSupportedTaskGroupType(TaskGroupType t) { return t == TaskGroupType.ALL_BLOCKING_QUEUE || t == TaskGroupType.INTERMEDIATE_BLOCKING_QUEUE || t == TaskGroupType.INTERMEDIATE_DISRUPTOR_QUEUE; }

Try / catch

try { group = TaskGroupUtils.createTaskGroup(loc, name, tasks); } catch (IllegalArgumentException e) { if (e.getMessage().startsWith("Unsupported task group type")) { log.error("fallback to default queue type"); group = TaskGroupUtils.createTaskGroup(loc, name, tasks); /* default */ } else { throw e; } }

Prevention

When it happens

Trigger: Calling createTaskGroup with a TaskGroupType value that has no case in the switch; engine config or plugin code requesting an unsupported task group type; enum drift between modules after an upgrade.

Common situations: Custom engine patches introducing new TaskGroupType constants without updating TaskGroupUtils; mixed worker/server jar versions; misconfigured task group type in custom deployment code.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/c52d0948cc3ead75. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/execution/TaskGroupUtils.java:42

public class TaskGroupUtils {

    public static TaskGroup createTaskGroup(
            TaskGroupType type,
            TaskGroupLocation taskGroupLocation,
            String taskGroupName,
            Collection<Task> tasks) {
        switch (type) {
            case DEFAULT:
                return new TaskGroupDefaultImpl(taskGroupLocation, taskGroupName, tasks);
            case INTERMEDIATE_BLOCKING_QUEUE:
                return new TaskGroupWithIntermediateBlockingQueue(
                        taskGroupLocation, taskGroupName, tasks);
            case INTERMEDIATE_DISRUPTOR_QUEUE:
                return new TaskGroupWithIntermediateDisruptor(
                        taskGroupLocation, taskGroupName, tasks);
            default:
                throw new IllegalArgumentException("Unsupported task group type: " + type);
        }
    }
}

View on GitHub (pinned to cf67b549a7)