{"record":{"id":"e11427eab9674c34","repo":"conductor-oss/conductor","slug":"invalid-unsupported-sink-specified-s","errorCode":null,"errorMessage":"Invalid / Unsupported sink specified: %s","messagePattern":"Invalid / Unsupported sink specified: (.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/com/netflix/conductor/core/execution/tasks/Event.java","lineNumber":148,"sourceCode":"        String sinkValue = (String) replaced.get(\"sink\");\n        String queueName = sinkValue;\n\n        if (sinkValue.startsWith(\"conductor\")) {\n            if (\"conductor\".equals(sinkValue)) {\n                queueName =\n                        sinkValue\n                                + \":\"\n                                + workflow.getWorkflowName()\n                                + \":\"\n                                + task.getReferenceTaskName();\n            } else if (sinkValue.startsWith(\"conductor:\")) {\n                queueName =\n                        \"conductor:\"\n                                + workflow.getWorkflowName()\n                                + \":\"\n                                + sinkValue.replaceAll(\"conductor:\", \"\");\n            } else {\n                throw new IllegalStateException(\n                        \"Invalid / Unsupported sink specified: \" + sinkValue);\n            }\n        }\n        return queueName;\n    }\n\n    @VisibleForTesting\n    ObservableQueue getQueue(String queueName, String taskId) {\n        try {\n            return eventQueues.getQueue(queueName);\n        } catch (IllegalArgumentException e) {\n            throw new IllegalStateException(\n                    \"Error loading queue:\"\n                            + queueName\n                            + \", for task:\"\n                            + taskId\n                            + \", error: \"\n                            + e.getMessage());","sourceCodeStart":130,"sourceCodeEnd":166,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/core/src/main/java/com/netflix/conductor/core/execution/tasks/Event.java#L130-L166","documentation":"Thrown by Event.computeQueueName() when the sink value starts with 'conductor' but is neither exactly 'conductor' nor starts with 'conductor:'. The EVENT task supports sinks prefixed with 'conductor' (internal queue), 'sqs:', 'amqp:', etc. via registered providers. A sink like 'conductorXYZ' or 'conductor_bad' falls into the else branch and throws IllegalStateException. This indicates a malformed sink string.","triggerScenarios":"An EVENT task's sink input parameter resolves to a value like 'conductorABC', 'conductor_event', or 'Conductor' (wrong case) at runtime. The sink parameter uses an underscore or hyphen instead of a colon after 'conductor'.","commonSituations":"Workflow designer wrote 'conductor_event' instead of 'conductor:event'. The sink value is built dynamically by an expression that produces a malformed string. Case sensitivity issue: 'Conductor' vs 'conductor'.","solutions":["Use the correct sink format: 'conductor' (alone), 'conductor:queueName', or an external sink like 'sqs:queueName'.","If the sink is dynamically generated, verify the expression produces a valid prefix.","Check for typos — the prefix must be exactly 'conductor' or 'conductor:' followed by the queue identifier.","Ensure the sink value is lowercase — 'Conductor' will not match."],"exampleFix":"// before\n\"inputParameters\": {\n  \"sink\": \"conductor_event\"\n}\n\n// after\n\"inputParameters\": {\n  \"sink\": \"conductor:event\"\n}","handlingStrategy":"validation","validationCode":"// Validate EVENT task sink format\nString sink = (String) task.getInputData().get(\"sink\");\nif (sink != null && sink.toLowerCase().startsWith(\"conductor\")\n        && !sink.equals(\"conductor\") && !sink.startsWith(\"conductor:\")) {\n    throw new IllegalStateException(\n        \"Invalid conductor sink: \" + sink + \". Use 'conductor' or 'conductor:queueName'\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use 'conductor' (alone) or 'conductor:queueName' for internal sinks.","For external sinks, use registered prefixes like 'sqs:', 'amqp:'.","Validate sink strings in workflow definitions before registration."],"tags":["event-task","sink","queue","illegal-state","configuration"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}