{"record":{"id":"37b8267bc015def3","repo":"apache/seatunnel","slug":"the-number-of-exclusive-options-must-be-greater-th","errorCode":null,"errorMessage":"The number of exclusive options must be greater than 1.","messagePattern":"The number of exclusive options must be greater than 1\\.","errorType":"validation","errorClass":"org.apache.seatunnel.api.configuration.util.OptionValidationException","httpStatus":null,"severity":"error","filePath":"seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionRule.java","lineNumber":204,"sourceCode":"                verifyOptionOptionsDuplicate(option, CurrentOptionType.OPTIONS_OPTION.getType());\n            }\n            this.optionalOptions.addAll(Arrays.asList(options));\n            return this;\n        }\n\n        /** Absolutely required options without any constraints. */\n        public Builder required(@NonNull Option<?>... options) {\n            RequiredOption.AbsolutelyRequiredOptions requiredOption =\n                    RequiredOption.AbsolutelyRequiredOptions.of(options);\n            verifyRequiredOptionDuplicate(requiredOption);\n            this.requiredOptions.add(requiredOption);\n            return this;\n        }\n\n        /** Exclusive options, only one of the options needs to be configured. */\n        public Builder exclusive(@NonNull Option<?>... options) {\n            if (options.length <= 1) {\n                throw new OptionValidationException(\n                        \"The number of exclusive options must be greater than 1.\");\n            }\n            RequiredOption.ExclusiveRequiredOptions exclusiveRequiredOption =\n                    RequiredOption.ExclusiveRequiredOptions.of(options);\n            verifyRequiredOptionDuplicate(exclusiveRequiredOption);\n            this.requiredOptions.add(exclusiveRequiredOption);\n            return this;\n        }\n\n        public <T> Builder conditional(\n                @NonNull Option<T> conditionalOption,\n                @NonNull List<T> expectValues,\n                @NonNull Option<?>... requiredOptions) {\n            verifyConditionalExists(conditionalOption);\n\n            if (expectValues.isEmpty()) {\n                throw new OptionValidationException(\n                        String.format(","sourceCodeStart":186,"sourceCodeEnd":222,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionRule.java#L186-L222","documentation":"A developer-facing builder guard in OptionRule.Builder.exclusive: a required-options group was declared with only one exclusive option, which is meaningless since exclusivity requires at least two mutually exclusive alternatives. The faulting input is the Option... arguments passed to exclusive().","triggerScenarios":"Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionRule.java:204 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass at least two Option instances to Builder.exclusive(...)","If only one option is truly required, use Builder.required(...) instead","Fix the connector's OptionRule definition code, not the user config"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}