{"record":{"id":"645ce705180e4ced","repo":"apache/seatunnel","slug":"option-field-delimiter-cannot-be-empty-645ce7","errorCode":null,"errorMessage":"Option 'field_delimiter' cannot be empty","messagePattern":"Option 'field_delimiter' cannot be empty","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-azure-queue-storage/src/main/java/org/apache/seatunnel/connectors/seatunnel/azure/queue/config/AzureQueueSourceConfig.java","lineNumber":85,"sourceCode":"                        .batchSize(config.get(AzureQueueStorageSourceOptions.BATCH_SIZE))\n                        .visibilityTimeoutSeconds(\n                                config.get(\n                                        AzureQueueStorageSourceOptions.VISIBILITY_TIMEOUT_SECONDS))\n                        .pollIntervalMillis(\n                                config.get(AzureQueueStorageSourceOptions.POLL_INTERVAL_MS))\n                        .maxInFlightMessages(\n                                config.get(AzureQueueStorageSourceOptions.MAX_IN_FLIGHT_MESSAGES))\n                        .operationTimeoutMillis(\n                                config.get(AzureQueueStorageSourceOptions.OPERATION_TIMEOUT_MS))\n                        .build();\n        sourceConfig.validate();\n        return sourceConfig;\n    }\n\n    private void validate() {\n        AzureQueueConfigValidator.validateClient(this);\n        if (format == MessageFormat.TEXT && fieldDelimiter.isEmpty()) {\n            throw new IllegalArgumentException(\"Option 'field_delimiter' cannot be empty\");\n        }\n        if (batchSize < 1 || batchSize > MAX_BATCH_SIZE) {\n            throw new IllegalArgumentException(\"Option 'batch_size' must be between 1 and 32\");\n        }\n        if (visibilityTimeoutSeconds < 1\n                || visibilityTimeoutSeconds > MAX_VISIBILITY_TIMEOUT_SECONDS) {\n            throw new IllegalArgumentException(\n                    \"Option 'visibility_timeout_seconds' must be between 1 and 604800\");\n        }\n        if (pollIntervalMillis <= 0) {\n            throw new IllegalArgumentException(\n                    \"Option 'poll_interval_ms' must be greater than zero\");\n        }\n        if (maxInFlightMessages < batchSize) {\n            throw new IllegalArgumentException(\n                    \"Option 'max_in_flight_messages' must be greater than or equal to batch_size\");\n        }\n        if (operationTimeoutMillis <= 0) {","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-azure-queue-storage/src/main/java/org/apache/seatunnel/connectors/seatunnel/azure/queue/config/AzureQueueSourceConfig.java#L67-L103","documentation":"Config validation in AzureQueueSourceConfig.validate: when the message format is TEXT, field_delimiter is required to split queue message text into record fields; an empty delimiter would prevent correct field parsing, so it is rejected at source initialization.","triggerScenarios":"Building AzureQueueSourceConfig via from() with MessageFormat.TEXT and field_delimiter = \"\".","commonSituations":"Empty delimiter left from a copied template; user expected the default to apply after explicitly overriding with \"\"; unit-config generator emitted an empty value.","solutions":["Set field_delimiter to a non-empty separator, e.g. \",\"","Switch format = JSON if messages are not delimited text","Delete the field_delimiter key to fall back to the default"],"exampleFix":"// before\nformat = TEXT\nfield_delimiter = \"\"\n// after\nformat = TEXT\nfield_delimiter = \",\"","handlingStrategy":"validation","validationCode":"java\nif (format == MessageFormat.TEXT && (fieldDelimiter == null || fieldDelimiter.isEmpty())) {\n    fieldDelimiter = \",\";\n}","typeGuard":null,"tryCatchPattern":"java\ntry {\n    AzureQueueSourceConfig.from(config);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().equals(\"Option 'field_delimiter' cannot be empty\")) {\n        log.error(\"Provide a non-empty field_delimiter for TEXT format\");\n    } else { throw e; }\n}","preventionTips":["Omit field_delimiter instead of setting it to \"\"","Match source and sink formats when round-tripping messages","Validate configs locally with a -e local dry run"],"tags":["config","validation","azure","source"],"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-14T05:17:10.506Z"}