{"record":{"id":"139c6ab443adfa08","repo":"conductor-oss/conductor","slug":"illegal-event","errorCode":null,"errorMessage":"Illegal event {}","messagePattern":"Illegal event (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/com/netflix/conductor/core/events/EventQueues.java","lineNumber":57,"sourceCode":"    public EventQueues(\n            @Qualifier(EVENT_QUEUE_PROVIDERS_QUALIFIER) Map<String, EventQueueProvider> providers,\n            ParametersUtils parametersUtils) {\n        this.providers = providers;\n        this.parametersUtils = parametersUtils;\n    }\n\n    public List<String> getProviders() {\n        return providers.values().stream()\n                .map(p -> p.getClass().getName())\n                .collect(Collectors.toList());\n    }\n\n    @NonNull\n    public ObservableQueue getQueue(String eventType) {\n        String event = parametersUtils.replace(eventType).toString();\n        int index = event.indexOf(':');\n        if (index == -1) {\n            throw new IllegalArgumentException(\"Illegal event \" + event);\n        }\n\n        String type = event.substring(0, index);\n        String queueURI = event.substring(index + 1);\n        EventQueueProvider provider = providers.get(type);\n        if (provider != null) {\n            return provider.getQueue(queueURI);\n        } else {\n            throw new IllegalArgumentException(\"Unknown queue type \" + type);\n        }\n    }\n}\n","sourceCodeStart":39,"sourceCodeEnd":70,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/core/src/main/java/com/netflix/conductor/core/events/EventQueues.java#L39-L70","documentation":"Thrown by EventQueues.getQueue when the resolved event string contains no ':' separator. Event identifiers in Conductor are structured as '<type>:<queueURI>' (e.g. 'sqs:my-queue', 'conductor:my-event'). After parametersUtils.replace expands any ${...} placeholders, if the result has no colon the code cannot split type from URI and rejects it.","triggerScenarios":"Calling getQueue with a string that has no colon, e.g. 'my-event' instead of 'sqs:my-event'. A workflow/event-handler definition whose event field omits the provider prefix. A ${...} placeholder that resolves to a value without a colon.","commonSituations":"Misconfigured event handler event name (missing provider prefix). Copy-paste of a queue name without its type. A parameter substitution that yields a bare name.","solutions":["Format the event as '<type>:<name>' using a registered provider type (e.g. 'sqs:', 'conductor:', 'amqp:').","Check the event handler's event field in your workflow/event metadata for a missing prefix.","If the value comes from a ${...} placeholder, ensure the resolved value still contains the '<type>:' prefix."],"exampleFix":"// before\nqueue = eventQueues.getQueue(\"my-queue\");\n// after\nqueue = eventQueues.getQueue(\"sqs:my-queue\");","handlingStrategy":"validation","validationCode":"// Ensure event string contains a provider prefix\nString event = parametersUtils.replace(eventType).toString();\nif (event.indexOf(':') == -1) {\n    throw new IllegalArgumentException(\n        \"Event must be '<type>:<name>', got: \" + event);\n}","typeGuard":null,"tryCatchPattern":"try {\n    ObservableQueue q = eventQueues.getQueue(eventType);\n} catch (IllegalArgumentException e) {\n    // missing ':' -> reformat event as '<type>:<name>'\n}","preventionTips":["Always format event identifiers as '<providerType>:<name>'.","Validate event-handler definitions at registration time so missing prefixes fail early.","Ensure ${...} placeholders resolve to values that still contain the ':' prefix."],"tags":["events","queue","illegal-argument","configuration"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}