{"record":{"id":"2377ab1cf384cfa0","repo":"conductor-oss/conductor","slug":"there-is-no-queue-for-handling-s-status","errorCode":null,"errorMessage":"There is no queue for handling %s status","messagePattern":"There is no queue for handling (.+?) status","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":400,"severity":"error","filePath":"core/src/main/java/com/netflix/conductor/core/events/queue/DefaultEventQueueProcessor.java","lineNumber":227,"sourceCode":"        update(externalIdMap, output, status);\n    }\n\n    private void update(\n            Map<String, Object> externalIdMap, Map<String, Object> output, Status status)\n            throws Exception {\n        Map<String, Object> outputMap = new HashMap<>();\n\n        outputMap.put(\"externalId\", objectMapper.writeValueAsString(externalIdMap));\n        outputMap.putAll(output);\n\n        Message msg =\n                new Message(\n                        UUID.randomUUID().toString(),\n                        objectMapper.writeValueAsString(outputMap),\n                        null);\n        ObservableQueue queue = queues.get(status);\n        if (queue == null) {\n            throw new IllegalArgumentException(\n                    \"There is no queue for handling \" + status.toString() + \" status\");\n        }\n        queue.publish(Collections.singletonList(msg));\n    }\n}\n","sourceCodeStart":209,"sourceCodeEnd":233,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/core/src/main/java/com/netflix/conductor/core/events/queue/DefaultEventQueueProcessor.java#L209-L233","documentation":"DefaultEventQueueProcessor.update looks up an ObservableQueue by task Status in the `queues` map and throws IllegalArgumentException when none is registered for that status. The processor only holds queues for the statuses it was constructed with; publishing an update for any other status is a configuration gap.","triggerScenarios":"Calling updateByTaskId/updateByTaskRefName with a Status that has no corresponding queue (e.g. CANCELED, ROLLED_BACK, or a custom status the processor was not wired to handle).","commonSituations":"A workflow emits a terminal status (like CANCELED) for which no sink queue is configured in the event-queue processor; misconfiguration of the status→queue wiring at startup; using a Status enum value added in a newer version.","solutions":["Check which Status values DefaultEventQueueProcessor was constructed with and ensure the caller only publishes those.","Register a queue for the missing status at construction time if that status should be published.","Filter or short-circuit upstream before calling update for statuses that have no queue.","Validate the status against the registered set before invoking update."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Before publishing, ensure a queue is registered for the status.\nif (!registeredStatuses.contains(status)) {\n    LOGGER.warn(\"No queue registered for status {}; skipping publish\", status);\n    return;\n}","typeGuard":null,"tryCatchPattern":"try {\n    eventQueueProcessor.updateByTaskId(workflowId, taskId, output, status);\n} catch (IllegalArgumentException e) {\n    LOGGER.error(\"No queue for status {}: {}\", status, e.getMessage());\n}","preventionTips":["Wire a queue for every status you intend to publish at construction time.","Gate upstream callers to only emit statuses that have a registered queue.","Document the registered status set for operators."],"tags":["conductor","event-queue","queue","configuration","status"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}