apache/seatunnel · error · IllegalArgumentException

input.queue is no longer supported; configure top-level queu

Error message

input.queue is no longer supported; configure top-level queue: instead.

What it means

AgentYamlConfig.normalize()/rejectLegacyQueue() enforces that the deprecated input.queue configuration key is no longer accepted. When a config file defines input.queue, the loader fails fast with this IllegalArgumentException, instructing users to move queue settings to the top-level queue: key.

Source

Thrown at seatunnel-edge-agent/seatunnel-edge-agent-starter/src/main/java/org/apache/seatunnel/edge/agent/starter/yaml/AgentYamlConfig.java:151

        private String onError;

        private MultilineDefinition multiline;

        @JsonProperty("output-format")
        private OutputFormatDefinition outputFormat;

        @JsonProperty("queue")
        private QueueDefinition legacyQueue;

        public void ensureDefaults() {
            if (paths == null) {
                paths = Collections.emptyList();
            }
        }

        public void rejectLegacyQueue() {
            if (legacyQueue != null) {
                throw new IllegalArgumentException(
                        "input.queue is no longer supported; configure top-level queue: instead.");
            }
        }

        public void normalizeLegacyPath() {
            if ((paths == null || paths.isEmpty()) && path != null && !path.trim().isEmpty()) {
                paths = Collections.singletonList(path.trim());
            }
        }

        public FileInputDefinition toFileInputDefinition() {
            return FileInputDefinition.fromReader(this);
        }
    }

    @Getter
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static final class FileInputDefinition implements Serializable {

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Move the queue settings from input.queue to the top-level queue: key in the YAML config.
  2. Consult the current version's config template/docs for the new queue option names and defaults.
  3. Delete the obsolete input.queue block if the top-level queue is already configured.
  4. Search deployment scripts/config repos for 'input.queue' and update all environments.

Example fix

// before
input:
  queue:
    capacity: 1000
// after
queue:
  capacity: 1000
Defensive patterns

Strategy: validation

Validate before calling

if (yaml.contains("input:")) { /* parse and reject input.queue before load */ }

Try / catch

try { cfg = AgentYamlLoader.load(path); } catch (IllegalArgumentException e) { if (e.getMessage().contains("input.queue is no longer supported")) { migrateLegacyQueueConfig(path); cfg = AgentYamlLoader.load(path); } else { throw e; } }

Prevention

When it happens

Trigger: Starting the agent with a YAML config that still contains the legacy input.queue block; the check runs during config normalization on every load.

Common situations: Upgrading from an older agent version whose configs used input.queue; copying example configs from outdated documentation or blog posts; template files not migrated after the queue config was flattened to top level.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


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