{"record":{"id":"78b00877a315aa7f","repo":"apache/seatunnel","slug":"configuration-failed","errorCode":"CONFIGURATION_FAILED","errorMessage":"Azure Queue Storage source supports streaming jobs only","messagePattern":"Azure Queue Storage source supports streaming jobs only","errorType":"error_code","errorClass":"AzureQueueConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-azure-queue-storage/src/main/java/org/apache/seatunnel/connectors/seatunnel/azure/queue/source/AzureQueueStorageSource.java","lineNumber":63,"sourceCode":"    private final AzureQueueSourceConfig config;\n    private final CatalogTable catalogTable;\n    private final DeserializationSchema<SeaTunnelRow> deserializationSchema;\n    private JobContext jobContext;\n\n    public AzureQueueStorageSource(\n            AzureQueueSourceConfig config,\n            CatalogTable catalogTable,\n            DeserializationSchema<SeaTunnelRow> deserializationSchema) {\n        this.config = config;\n        this.catalogTable = catalogTable;\n        this.deserializationSchema = deserializationSchema;\n    }\n\n    @Override\n    public Boundedness getBoundedness() {\n        if (jobContext != null) {\n            if (!JobMode.STREAMING.equals(jobContext.getJobMode())) {\n                throw new AzureQueueConnectorException(\n                        AzureQueueConnectorErrorCode.CONFIGURATION_FAILED,\n                        \"Azure Queue Storage source supports streaming jobs only\");\n            }\n            if (!jobContext.isEnableCheckpoint()) {\n                throw new AzureQueueConnectorException(\n                        AzureQueueConnectorErrorCode.CONFIGURATION_FAILED,\n                        \"Azure Queue Storage source requires checkpointing to delete messages\");\n            }\n        }\n        return Boundedness.UNBOUNDED;\n    }\n\n    @Override\n    public String getPluginName() {\n        return PLUGIN_NAME;\n    }\n\n    @Override","sourceCodeStart":45,"sourceCodeEnd":81,"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/source/AzureQueueStorageSource.java#L45-L81","documentation":"AzureQueueStorageSource.getBoundedness() throws AzureQueueConnectorException(CONFIGURATION_FAILED) when the job mode is not STREAMING. This source continuously polls a queue (UNBOUNDED), so it only makes sense in streaming mode; batch mode is rejected explicitly.","triggerScenarios":"Submitting a job with this source in BATCH job mode; getBoundedness() is consulted during source capability checks (shouldRequireStreamingModeWithCheckpointing).","commonSituations":"Users reusing a streaming config for a one-off backfill, or running 'seatunnel.sh' with -e local in batch mode by default without setting job.mode = streaming.","solutions":["Set job.mode = \"streaming\" in the env block of the job config","If a batch read is truly needed, use a different bounded source"],"exampleFix":"// before\nenv {\n  job.mode = \"BATCH\"\n}\n// after\nenv {\n  job.mode = \"STREAMING\"\n}","handlingStrategy":"validation","validationCode":"if (!\"streaming\".equalsIgnoreCase(env.get(\"job.mode\"))) {\n    throw new IllegalArgumentException(\"Azure Queue Storage source requires job.mode = streaming\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always include env { job.mode = \"streaming\" } when using queue sources","Template streaming configs separately from batch ones","Review job mode before local (-e local) test runs"],"tags":["config","job-mode","azure","streaming"],"backgroundTag":"unsupported-operation","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"}