{"record":{"id":"eb524e6f562b46e9","repo":"apache/seatunnel","slug":"the-plugin-type-of-seatunnel-only-support-these-op","errorCode":null,"errorMessage":"The plugin type of seaTunnel only support these options: [source, transform, sink]","messagePattern":"The plugin type of seaTunnel only support these options: \\[source, transform, sink\\]","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-core/seatunnel-starter/src/main/java/org/apache/seatunnel/core/starter/seatunnel/args/ConnectorCheckCommandArgs.java","lineNumber":61,"sourceCode":"\n    @Parameter(\n            names = {\"-pt\", \"--plugin-type\"},\n            description = \"SeaTunnel plugin type, support [source, sink, transform]\",\n            converter = SeaTunnelPluginTypeConverter.class)\n    private PluginType pluginType;\n\n    @Override\n    public Command<?> buildCommand() {\n        return new ConnectorCheckCommand(this);\n    }\n\n    public static class SeaTunnelPluginTypeConverter implements IStringConverter<PluginType> {\n        @Override\n        public PluginType convert(String value) {\n            try {\n                return PluginType.valueOf(value.toUpperCase());\n            } catch (IllegalArgumentException e) {\n                throw new IllegalArgumentException(\n                        \"The plugin type of seaTunnel only \"\n                                + \"support these options: [source, transform, sink]\");\n            }\n        }\n    }\n}\n","sourceCodeStart":43,"sourceCodeEnd":68,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-starter/src/main/java/org/apache/seatunnel/core/starter/seatunnel/args/ConnectorCheckCommandArgs.java#L43-L68","documentation":"ConnectorCheckCommandArgs.SeaTunnelPluginTypeConverter.convert() throws this IllegalArgumentException when the -t/--plugin-type value cannot be parsed as a PluginType. Only source, transform, and sink are accepted (case-insensitive, matched against the PluginType enum).","triggerScenarios":"Running `seatunnel.sh --check-config`-style connector check with e.g. `--plugin-type connector`, `--plugin-type sourceand Sink`, or any misspelled type that fails PluginType.valueOf.","commonSituations":"Guessing plugin type names instead of using the enum; scripts parameterized with an empty or wrong type; confusion with plugin jar types.","solutions":["Use one of: --plugin-type source, --plugin-type transform, or --plugin-type sink (case-insensitive)","Check the PluginType enum for the exact accepted names","Fix typos/case issues in scripts generating the CLI arguments"],"exampleFix":"// before\n--plugin-type connector\n// after\n--plugin-type source","handlingStrategy":"validation","validationCode":"const allowed = ['source','transform','sink'];\nif (!allowed.includes(pluginType.toLowerCase())) {\n  throw new Error(`--plugin-type must be one of ${allowed}; got: ${pluginType}`);\n}","typeGuard":"const isPluginType = (v) => ['source','transform','sink'].includes(String(v).toLowerCase());","tryCatchPattern":"try {\n  connectorCheck.run(args);\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().contains('[source, transform, sink]')) {\n    // prompt user / fix the -t value and retry\n  }\n}","preventionTips":["Only pass source, transform, or sink for --plugin-type","Check the PluginType enum when in doubt","Validate user input in scripts before building the CLI command"],"tags":["cli","plugin-type","argument-parsing"],"backgroundTag":"invalid-enum-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}