{"record":{"id":"c319923473d23d9a","repo":"flowable/flowable-engine","slug":"invalid-url","errorCode":null,"errorMessage":"invalid url: ","messagePattern":"invalid url: ","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/EventRegistryEngines.java","lineNumber":205,"sourceCode":"     * @param eventRegistryEngineName\n     *            is the name of the event registry engine or null for the default event registry engine.\n     */\n    public static EventRegistryEngine getEventRegistryEngine(String eventRegistryEngineName) {\n        if (!isInitialized()) {\n            init();\n        }\n        return eventRegistryEngines.get(eventRegistryEngineName);\n    }\n\n    /**\n     * retries to initialize an event registry engine that previously failed.\n     */\n    public static EngineInfo retry(String resourceUrl) {\n        LOGGER.debug(\"retying initializing of resource {}\", resourceUrl);\n        try {\n            return initEventRegistryEngineFromResource(new URL(resourceUrl));\n        } catch (MalformedURLException e) {\n            throw new FlowableException(\"invalid url: \" + resourceUrl, e);\n        }\n    }\n\n    /**\n     * provides access to event registry engine to application clients in a managed server environment.\n     */\n    public static Map<String, EventRegistryEngine> getEventRegistryEngines() {\n        return eventRegistryEngines;\n    }\n\n    /**\n     * closes all event registry engines. This method should be called when the server shuts down.\n     */\n    public static synchronized void destroy() {\n        if (isInitialized()) {\n            Map<String, EventRegistryEngine> engines = new HashMap<>(eventRegistryEngines);\n            eventRegistryEngines = new HashMap<>();\n","sourceCodeStart":187,"sourceCodeEnd":223,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/EventRegistryEngines.java#L187-L223","documentation":"FlowableException('invalid url: ...') is thrown by EventRegistryEngines.retry(String) when the supplied resourceUrl string cannot be parsed into a java.net.URL (MalformedURLException). retry() re-attempts engine initialization for a previously failed resource URL, but only well-formed URLs are accepted.","triggerScenarios":"Calling EventRegistryEngines.retry(resourceUrl) with a string that is not a valid absolute URL — e.g. a bare classpath path like 'flowable.cfg.xml' or a malformed 'classpath:...' URI instead of a URL like 'file:/...' or a real http/file URL.","commonSituations":"Passing a Spring resource path ('classpath:...') rather than the URL stored earlier in EngineInfo.getResourceUrl(); URL with illegal characters (unencoded spaces); truncating the URL when copying it.","solutions":["Pass the exact resourceUrl from EngineInfo.getResourceUrl(), not a hand-typed or classpath-style path","Convert classpath locations to URLs first (e.g. getClass().getResource(path))","URL-encode spaces and special characters in file paths before calling retry"],"exampleFix":"// before\nEventRegistryEngines.retry(\"flowable-eventregistry.cfg.xml\"); // malformed\n// after\nEngineInfo info = EventRegistryEngines.getEventRegistryEngineInfos().get(0);\nEventRegistryEngines.retry(info.getResourceUrl());","handlingStrategy":"validation","validationCode":"boolean isValidUrl(String s) {\n    try { new java.net.URL(s); return true; } catch (java.net.MalformedURLException e) { return false; }\n}","typeGuard":null,"tryCatchPattern":"try {\n    return EventRegistryEngines.retry(resourceUrl);\n} catch (FlowableException e) {\n    LOGGER.error(\"retry failed for {}\", resourceUrl, e);\n    return null;\n}","preventionTips":["Always reuse EngineInfo.getResourceUrl() as the retry argument, never a reconstructed string","Convert classpath locations via getClass().getResource(path) to obtain real URLs","URL-encode spaces/special characters in file paths"],"tags":["flowable","url","retry","initialization"],"backgroundTag":"invalid-url","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}