{"record":{"id":"93037d96c2997826","repo":"apache/seatunnel","slug":"config-validation-failed-93037d","errorCode":"CONFIG_VALIDATION_FAILED","errorMessage":"PluginName: Doris, Message: 'doris.config.partitions' cannot contain blank partition names.","messagePattern":"PluginName: Doris, Message: 'doris\\.config\\.partitions' cannot contain blank partition names\\.","errorType":"validation","errorClass":"DorisConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/config/DorisSinkConfig.java","lineNumber":175,"sourceCode":"    }\n    /**\n     * Parses a comma-separated partition list for partition-scoped DROP_DATA cleanup.\n     *\n     * @throws DorisConnectorException if a partition name is blank or duplicated\n     */\n    private static List<String> parseDropDataPartitions(Properties streamLoadProperties) {\n        String configuredPartitions = streamLoadProperties.getProperty(\"partitions\");\n        if (configuredPartitions == null) {\n            return Collections.emptyList();\n        }\n\n        String[] values = configuredPartitions.split(\",\", -1);\n        List<String> partitions = new ArrayList<>(values.length);\n        Set<String> uniquePartitions = new HashSet<>();\n        for (String value : values) {\n            String partition = value.trim();\n            if (partition.isEmpty()) {\n                throw new DorisConnectorException(\n                        SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,\n                        \"PluginName: Doris, Message: 'doris.config.partitions' cannot contain blank partition names.\");\n            }\n            if (!uniquePartitions.add(partition)) {\n                throw new DorisConnectorException(\n                        SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,\n                        \"PluginName: Doris, Message: 'doris.config.partitions' cannot contain duplicate partition names.\");\n            }\n            partitions.add(partition);\n        }\n        return Collections.unmodifiableList(partitions);\n    }\n}\n","sourceCodeStart":157,"sourceCodeEnd":189,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/config/DorisSinkConfig.java#L157-L189","documentation":"DorisSinkConfig.parseDropDataPartitions validates the `doris.config.partitions` option; splitting on comma must yield non-empty trimmed partition names, otherwise a DorisConnectorException with CONFIG_VALIDATION_FAILED is thrown. This prevents empty entries like 'p1,,p2' or trailing commas from reaching partition-drop logic.","triggerScenarios":"Setting doris.config.partitions to a value that contains an empty element after trimming: e.g. \"p1,,p2\", \",p1\", \"p1,\", or a value of only whitespace/commas.","commonSituations":"Hand-edited HOCON config with accidental double commas or trailing comma; templated config where a variable resolved to empty; copy-paste errors in partition lists.","solutions":["Remove empty entries and stray commas from doris.config.partitions (e.g. use \"p1,p2\")","Remove the doris.config.partitions option entirely if partition dropping is not intended","Validate the partition names against actual Doris partitions (`SHOW PARTITIONS FROM table`)"],"exampleFix":"// before\npartitions = \"p1,,p2\"\n// after\npartitions = \"p1,p2\"","handlingStrategy":"validation","validationCode":"String partitions = config.getString(\"doris.config.partitions\");\nif (partitions != null && Stream.of(partitions.split(\",\")).map(String::trim).anyMatch(String::isEmpty)) {\n    throw new IllegalArgumentException(\"doris.config.partitions contains blank names\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    DorisSinkConfig cfg = DorisSinkConfig.of(config);\n} catch (DorisConnectorException e) {\n    if (e.getMessage().contains(\"cannot contain blank partition names\")) {\n        LOG.error(\"Fix doris.config.partitions: remove empty entries / stray commas\");\n    }\n    throw e;\n}","preventionTips":["Avoid double commas and trailing commas in comma-separated config lists","Trim and filter entries programmatically when building the config","Validate partition names against SHOW PARTITIONS output before submitting the job"],"tags":["config-validation","doris","sink"],"backgroundTag":"invalid-config-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"}