{"record":{"id":"bf8ae88545c0f677","repo":"apache/seatunnel","slug":"s-s-duplicate-in-s","errorCode":null,"errorMessage":"%s '%s' duplicate in '%s'.","messagePattern":"(.+?) '(.+?)' duplicate in '(.+?)'\\.","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":564,"sourceCode":"        }\n\n        private void verifyOptionOptionsDuplicate(\n                @NonNull Option<?> option, @NonNull String currentOptionType) {\n            verifyDuplicateWithOptionOptions(option, currentOptionType);\n\n            boolean hasOptionsOptionWithConstraint =\n                    CurrentOptionType.OPTIONS_OPTION_WITH_CONSTRAINT.type.equals(currentOptionType);\n            requiredOptions.forEach(\n                    requiredOption -> {\n                        if (hasOptionsOptionWithConstraint\n                                && (requiredOption\n                                                instanceof RequiredOption.ExclusiveRequiredOptions\n                                        || requiredOption\n                                                instanceof RequiredOption.BundledRequiredOptions)) {\n                            return;\n                        }\n                        if (requiredOption.getOptions().contains(option)) {\n                            throw new OptionValidationException(\n                                    String.format(\n                                            \"%s '%s' duplicate in '%s'.\",\n                                            currentOptionType,\n                                            option.key(),\n                                            requiredOption.getClass().getSimpleName()));\n                        }\n                    });\n        }\n\n        private void verifyConditionalExists(@NonNull Option<?> option) {\n            boolean inOptions = optionalOptions.contains(option);\n            AtomicBoolean inRequired = new AtomicBoolean(false);\n            requiredOptions.forEach(\n                    requiredOption -> {\n                        if (requiredOption.getOptions().contains(option)) {\n                            inRequired.set(true);\n                        }\n                    });","sourceCodeStart":546,"sourceCodeEnd":582,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionRule.java#L546-L582","documentation":"Validation guard inside OptionRule's builder fired while processing an optional()/required() entry: the option key being added already appears in the rule's option list (or collides with an entry under an OPTIONS_OPTION_WITH_CONSTRAINT block). The message names the option type ('required', 'optional', etc.) and the offending key, so the duplicate declaration in the factory's OptionRule is the input at fault.","triggerScenarios":"Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionRule.java:564 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Search the factory's OptionRule for the duplicated key reported in the message and delete one of the declarations","Share a single static Option constant across rules instead of re-declaring OptionTypes with the same key","Add a unit test asserting the rule builds without throwing to catch regressions"],"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"}