Sami Peltola created CAMEL-21495: ------------------------------------ Summary: camel-quarkus: REST route inlining works incorrectly when testing Key: CAMEL-21495 URL: https://issues.apache.org/jira/browse/CAMEL-21495 Project: Camel Issue Type: Bug Components: camel-rest-openapi Affects Versions: 4.8.1 Reporter: Sami Peltola Attachments: quarkus-camel-rest-inline-issue.zip
h2. The Issue: REST-route inlining works incorrectly/inconsistently when testing Encountered when running tests, sometimes the wrong subroute gets inlined to the rest-route and causes failures. Referring to: [https://camel.apache.org/manual/rest-dsl.html#_inline_rest_dsl_as_a_single_route] I've attached an example project. When running the tests, a test called "FailingTest" should have "camel.rest.inline-routes" enabled and should fail, as opposed to "SucceedingTest" which has the option disabled and does not fail. It seems like when inlining the routes, the subroute "get-from-db-route" gets inlined when actually route "quarkuscamelexampleservice-http-get-route" should be inlined as it is the subroute that is called from the REST-route. For some reason, the tests failing also seems a bit flaky, so you might have to run all the tests in a loop to replicate the issue, i've included a script "run-test-in-loop.sh". When the test fails, it only shows routes: {code:java} 2024-12-02 10:45:20,687 INFO [org.apa.cam.qua.cor.CamelBootstrapRecorder] (main) Apache Camel Quarkus 3.16.0 is starting 2024-12-02 10:45:20,687 INFO [org.apa.cam.mai.MainSupport] (main) Apache Camel (Main) 4.8.1 is starting 2024-12-02 10:45:20,716 INFO [org.apa.cam.mai.BaseMainSupport] (main) Auto-configuration summary 2024-12-02 10:45:20,716 INFO [org.apa.cam.mai.BaseMainSupport] (main) [MicroProfilePropertiesSource] camel.main.dumpRoutes = xml 2024-12-02 10:45:20,716 INFO [org.apa.cam.mai.BaseMainSupport] (main) [JVM System Property] camel.rest.inlineRoutes = true 2024-12-02 10:45:20,882 INFO [org.apa.cam.imp.eng.AbstractCamelContext] (main) Apache Camel 4.8.1 (camel-1) is starting 2024-12-02 10:45:20,894 INFO [org.apa.cam.imp.DefaultDumpRoutesStrategy] (main) Dumping 5 routes as XML 2024-12-02 10:45:20,895 INFO [org.apa.cam.imp.DefaultDumpRoutesStrategy] (main) <route id="get-from-db-route" streamCache="true"> <from uri="direct:get-from-db"/> <onException> <exception>java.lang.Exception</exception> <redeliveryPolicy logHandled="true"/> <setBody> <simple>Error with database backend: ${exception.message}</simple> </setBody> <removeHeaders pattern="*"/> <stop/> </onException> <process/> </route> {code} Sometimes it works correctly, and shows how it actually should have inlined the routes with the route "subroute-for-get" not being inlined to the REST-route,but instead existing as a separate route in the context: {code:java} 2024-12-02 10:40:11,095 INFO [org.apa.cam.qua.cor.CamelBootstrapRecorder] (main) Apache Camel Quarkus 3.16.0 is starting 2024-12-02 10:40:11,096 INFO [org.apa.cam.mai.MainSupport] (main) Apache Camel (Main) 4.8.1 is starting 2024-12-02 10:40:11,198 INFO [org.apa.cam.mai.BaseMainSupport] (main) Auto-configuration summary 2024-12-02 10:40:11,198 INFO [org.apa.cam.mai.BaseMainSupport] (main) [MicroProfilePropertiesSource] camel.main.dumpRoutes = xml 2024-12-02 10:40:11,199 INFO [org.apa.cam.mai.BaseMainSupport] (main) [JVM System Property] camel.rest.inlineRoutes = true 2024-12-02 10:40:11,857 INFO [org.apa.cam.imp.eng.AbstractCamelContext] (main) Apache Camel 4.8.1 (camel-1) is starting 2024-12-02 10:40:11,923 INFO [org.apa.cam.imp.DefaultDumpRoutesStrategy] (main) Dumping 6 routes as XML 2024-12-02 10:40:11,924 INFO [org.apa.cam.imp.DefaultDumpRoutesStrategy] (main) <route id="get-from-db-route" streamCache="true"> <from uri="direct:get-from-db"/> <onException> <exception>java.lang.Exception</exception> <redeliveryPolicy logHandled="true"/> <setBody> <simple>Error with database backend: ${exception.message}</simple> </setBody> <removeHeaders pattern="*"/> <stop/> </onException> <process/> </route> <route id="subroute-for-get"> <from uri="direct:subroute-for-get"/> <onException> <exception>java.lang.Exception</exception> <redeliveryPolicy logHandled="true"/> <setBody> <simple>Error with http backend: ${exception.message}</simple> </setBody> <removeHeaders pattern="*"/> <stop/> </onException> <process/> </route> {code} I have not had any issues when running in quarkus dev-mode, so i am assuming this only affects testing. h2. Workaround For tests, disabled inlining the routes with: {code:java} camel.rest.inline-routes = false {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)