apache/seatunnel · error · org.apache.seatunnel.api.configuration.util.OptionValidationException

' ' duplicate in option options.

Error message

%s '%s' duplicate in option options.

What it means

A developer-facing duplicate guard in OptionRule.Builder.verifyDuplicateWithOptionOptions: an option was added twice to the same bucket (optional options, or a required group already overlapping the optional set), detected while registering required/optional options. The faulting input is the duplicated Option.

Solutions

  1. Remove the duplicate Option from the Builder.optional(...) or required/exclusive call
  2. Ensure each option key appears only once across the rule's option groups
  3. Fix the connector's OptionRule definition code, not the user config
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionRule.java:464 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionRule.java:464

                            .map(e -> new ConditionRule(e.getKey(), e.getValue()))
                            .collect(Collectors.toList());
            return new OptionRule(
                    optionalOptions, requiredOptions, conditionRuleList, valueConstraints);
        }

        private void verifyRequiredOptionDefaultValue(@NonNull Option<?> option) {
            if (option.defaultValue() != null) {
                throw new OptionValidationException(
                        String.format(
                                "Required option '%s' should have no default value.",
                                option.key()));
            }
        }

        private void verifyDuplicateWithOptionOptions(
                @NonNull Option<?> option, @NonNull String currentOptionType) {
            if (optionalOptions.contains(option)) {
                throw new OptionValidationException(
                        String.format(
                                "%s '%s' duplicate in option options.",
                                currentOptionType, option.key()));
            }
        }

        private void verifyRequiredOptionDuplicate(@NonNull RequiredOption requiredOption) {
            verifyRequiredOptionDuplicate(requiredOption, false);
        }

        /**
         * Verifies if there are duplicate options within the required options.
         *
         * @param requiredOption The required option to be verified
         * @param ignoreVerifyDuplicateOptions Whether to ignore duplicate option verification If
         *     the value is true, the existing items in OptionOptions are ignored Currently, it
         *     applies only to conditional
         * @throws OptionValidationException If duplicate options are found

View on GitHub (pinned to cf67b549a7)