{"record":{"id":"7e8a963dd781479b","repo":"apache/seatunnel","slug":"write-failed-7e8a96","errorCode":"WRITE_FAILED","errorMessage":"Failed to send message to Azure Queue Storage","messagePattern":"Failed to send message to Azure Queue Storage","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/sink/AzureQueueStorageSinkWriter.java","lineNumber":89,"sourceCode":"    public void write(SeaTunnelRow row) throws IOException {\n        checkSendError();\n        byte[] payload = serializationSchema.serialize(row);\n        validateMessageSize(payload.length);\n        acquireSendPermit();\n\n        try {\n            checkSendError();\n        } catch (AzureQueueConnectorException e) {\n            sendPermits.release();\n            throw e;\n        }\n\n        CompletableFuture<Void> sendFuture;\n        try {\n            sendFuture = sender.send(new String(payload, StandardCharsets.UTF_8));\n        } catch (RuntimeException e) {\n            sendPermits.release();\n            throw writeFailure(e);\n        }\n\n        pendingSends.add(sendFuture);\n        sendFuture.whenComplete(\n                (ignored, error) -> {\n                    if (error != null) {\n                        sendError.compareAndSet(null, unwrap(error));\n                    }\n                    pendingSends.remove(sendFuture);\n                    sendPermits.release();\n                });\n        checkSendError();\n    }\n\n    @Override\n    public Optional<Void> prepareCommit() {\n        flush();\n        return Optional.empty();","sourceCodeStart":71,"sourceCodeEnd":107,"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/sink/AzureQueueStorageSinkWriter.java#L71-L107","documentation":"AzureQueueStorageSinkWriter.write failed to send a row's payload to Azure Queue Storage. The immediate send call threw a RuntimeException, or the async send completed exceptionally — either path releases the permit and throws a SeaTunnelRuntimeException with code WRITE_FAILED.","triggerScenarios":"sender.send(...) throws synchronously (client closed, invalid queue reference), or the returned CompletableFuture completes exceptionally (queue doesn't exist, auth failure, quota/network errors). Also triggered when a previously failed async send surfaces during a later write.","commonSituations":"Queue deleted or wrong queue name in config; storage account key/connection string expired or rotated; network partition to Azure storage; exceeding queue message limits.","solutions":["Verify the queue name and storage account in the sink config (endpoint, queue) exist and are spelled correctly","Validate credentials/connection string validity and permissions (send rights on the queue)","Check network connectivity/DNS from the worker node to the Azure storage endpoint","Check the full exception cause chained in WRITE_FAILED for the actual Azure error code (e.g., 403, 404, quota)"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// pre-flight: ensure queue exists and credentials work before running the job\nQueueClient c = new QueueClientBuilder().connectionString(cs).queueName(queue).buildClient();\nif (!c.getQueueName().equals(queue)) throw new IllegalStateException(\"queue misconfigured\");","typeGuard":null,"tryCatchPattern":"try { writer.write(row); } catch (SeaTunnelRuntimeException e) { if (\"WRITE_FAILED\".equals(e.getSeaTunnelErrorCode().getCode())) { /* check Azure error code in cause */ } throw e; }","preventionTips":["Verify queue name and connection string at deploy time","Rotate credentials before expiry","Monitor Azure storage 4xx/5xx and throttling","Keep queue message payloads within size limits"],"tags":["azure","queue-storage","sink","network"],"backgroundTag":"http-error-response","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"}