Re: Camel 3.22 issues with route ID
Hi You can also use nodePrefixId to help make unique ids easier, which you can set on routes On Tue, Apr 16, 2024 at 9:49 AM Claus Ibsen wrote: > Hi > > This is correct as-is. You should not have duplicate ids, its your problem > to fix that. > > On Tue, Apr 16, 2024 at 9:23 AM Michael Rambichler > wrote: > >> Hi, >> >> >> >> we recently switched from Camel 3.18 to Camel 3.22 and we discovered >> following issue in some of our applications: >> >> >> >> We have several applications that use e.g. openapi generator to create >> separate route builder classes, a minimal reproducible example is: >> >> >> >> @Component >> >> public final class RestRoute extends RouteBuilder { >> >> public void configure() { >> >> rest().get().id("myRoute1").to("log:foo"); >> >> } >> >> } >> >> >> >> The id “myRoute1” is specified over the operationId in the open API spec. >> Furthermore, we have following “main” route using the same route ID (not >> on >> purpose): >> >> >> >> @Component >> >> public class MainRoute extends RouteBuilder { >> >> public void configure() { >> >> from("direct:myRoute1").routeId("myRoute1").to("log:bar"); >> >> } >> >> } >> >> >> >> The routeId in this route is typically set over config. Both routes use >> the >> same ID (which is not easy to detect in an application if REST route is >> auto-generated and main route gets ID from config). In Camel 3.18, we did >> not have a problem with that. >> >> >> >> However, in Camel 3.22, running a simple unit test shows a >> non-deterministic behavior: >> >> >> >>1. If RestRoute is configured first, it gets the ID “myRoute1” >> assigned. >>Afterwards, MainRoute is configured, and detects that “myRoute1” is >> already >>used, and throws an Exception: >> >> FailedToStartRouteException: Failed to start route myRoute1 because of >> duplicate id detected: myRoute1. >> >> >> >>2. If MainRoute is configured first, it gets the ID “myRoute1” >> assigned. >>Afterwards, RestRoute is configured, and detects that “myRoute1” is >> already >>used, and then assigns a new route ID to RestRoute (“route1”). No >> problem >>arises here. >> >> >> >> The problem is that the result varies from run to run. We had the >> situation, that in local unit test and test pipeline, the tests were >> running fine, but in the production deployment the test suddenly failed. >> >> Even worse is that the application startup would also fail if RestRoute is >> configured first. >> >> >> >> Another problem in Camel 3.22 we discovered in our tests was that if >> RestRoute uses .routeId() instead of .id(), e.g. >> rest().get().routeId("myRoute1").to("log:foo"), then one of the two routes >> will not start at all, without throwing an error. >> >> Here, the route that is configured first starts, and the other route won’t >> start. In Camel 3.18, .routeId() is not available for rest routes at all, >> so no problem there. >> >> >> >> So, it looks like the order of route configuration was deterministic in >> Camel 3.18 (here, it seems the route configuration order depended on the >> name of the class or the package the class is in). >> >> In Camel 3.22 it seems this is not deterministic anymore, leading to >> above-described problems. >> >> >> >> Please let us know if this behavior is known and if I should create a >> ticket for it. >> >> >> >> Thanks >> > > > -- > Claus Ibsen > - > @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 > -- Claus Ibsen - @davsclaus Camel in Action 2: https://www.manning.com/ibsen2
Re: Managing Quarkus dependencies when working with Native build
Could you be more specific, please? I can add line below, but that’s for runtime. I need to figure out design time - to prevent VS Code complaining about missing dependencies. // camel-k: dependency=mvn:org.apache.camel.quarkus:camel-quarkus-core Thanks, Vlad > On 15. 4. 2024, at 16:43, Claudio Miranda wrote: > > Em seg., 15 de abr. de 2024 às 15:14, Vladislav Krejcirik > escreveu: >> >> Thanks for quick response! I do need reflection for my class. Please see my >> dummy Integration below. When I removed annotation, it was not able to find >> my ‘getRandomNumber’ method. When I added annotation, it worked just fine, >> but my VS Code was complaining about missing Quarkus dependency. > > You can add the maven artifact: io.quarkus:quarkus-core to the > dependency list, so the vscode can learn about the dependency. > > -- > Claudio Miranda > > clau...@claudius.com.br > http://www.claudius.com.br
Re: Camel 3.22 issues with route ID
Hi This is correct as-is. You should not have duplicate ids, its your problem to fix that. On Tue, Apr 16, 2024 at 9:23 AM Michael Rambichler wrote: > Hi, > > > > we recently switched from Camel 3.18 to Camel 3.22 and we discovered > following issue in some of our applications: > > > > We have several applications that use e.g. openapi generator to create > separate route builder classes, a minimal reproducible example is: > > > > @Component > > public final class RestRoute extends RouteBuilder { > > public void configure() { > > rest().get().id("myRoute1").to("log:foo"); > > } > > } > > > > The id “myRoute1” is specified over the operationId in the open API spec. > Furthermore, we have following “main” route using the same route ID (not on > purpose): > > > > @Component > > public class MainRoute extends RouteBuilder { > > public void configure() { > > from("direct:myRoute1").routeId("myRoute1").to("log:bar"); > > } > > } > > > > The routeId in this route is typically set over config. Both routes use the > same ID (which is not easy to detect in an application if REST route is > auto-generated and main route gets ID from config). In Camel 3.18, we did > not have a problem with that. > > > > However, in Camel 3.22, running a simple unit test shows a > non-deterministic behavior: > > > >1. If RestRoute is configured first, it gets the ID “myRoute1” assigned. >Afterwards, MainRoute is configured, and detects that “myRoute1” is > already >used, and throws an Exception: > > FailedToStartRouteException: Failed to start route myRoute1 because of > duplicate id detected: myRoute1. > > > >2. If MainRoute is configured first, it gets the ID “myRoute1” assigned. >Afterwards, RestRoute is configured, and detects that “myRoute1” is > already >used, and then assigns a new route ID to RestRoute (“route1”). No > problem >arises here. > > > > The problem is that the result varies from run to run. We had the > situation, that in local unit test and test pipeline, the tests were > running fine, but in the production deployment the test suddenly failed. > > Even worse is that the application startup would also fail if RestRoute is > configured first. > > > > Another problem in Camel 3.22 we discovered in our tests was that if > RestRoute uses .routeId() instead of .id(), e.g. > rest().get().routeId("myRoute1").to("log:foo"), then one of the two routes > will not start at all, without throwing an error. > > Here, the route that is configured first starts, and the other route won’t > start. In Camel 3.18, .routeId() is not available for rest routes at all, > so no problem there. > > > > So, it looks like the order of route configuration was deterministic in > Camel 3.18 (here, it seems the route configuration order depended on the > name of the class or the package the class is in). > > In Camel 3.22 it seems this is not deterministic anymore, leading to > above-described problems. > > > > Please let us know if this behavior is known and if I should create a > ticket for it. > > > > Thanks > -- Claus Ibsen - @davsclaus Camel in Action 2: https://www.manning.com/ibsen2
Camel 3.22 issues with route ID
Hi, we recently switched from Camel 3.18 to Camel 3.22 and we discovered following issue in some of our applications: We have several applications that use e.g. openapi generator to create separate route builder classes, a minimal reproducible example is: @Component public final class RestRoute extends RouteBuilder { public void configure() { rest().get().id("myRoute1").to("log:foo"); } } The id “myRoute1” is specified over the operationId in the open API spec. Furthermore, we have following “main” route using the same route ID (not on purpose): @Component public class MainRoute extends RouteBuilder { public void configure() { from("direct:myRoute1").routeId("myRoute1").to("log:bar"); } } The routeId in this route is typically set over config. Both routes use the same ID (which is not easy to detect in an application if REST route is auto-generated and main route gets ID from config). In Camel 3.18, we did not have a problem with that. However, in Camel 3.22, running a simple unit test shows a non-deterministic behavior: 1. If RestRoute is configured first, it gets the ID “myRoute1” assigned. Afterwards, MainRoute is configured, and detects that “myRoute1” is already used, and throws an Exception: FailedToStartRouteException: Failed to start route myRoute1 because of duplicate id detected: myRoute1. 2. If MainRoute is configured first, it gets the ID “myRoute1” assigned. Afterwards, RestRoute is configured, and detects that “myRoute1” is already used, and then assigns a new route ID to RestRoute (“route1”). No problem arises here. The problem is that the result varies from run to run. We had the situation, that in local unit test and test pipeline, the tests were running fine, but in the production deployment the test suddenly failed. Even worse is that the application startup would also fail if RestRoute is configured first. Another problem in Camel 3.22 we discovered in our tests was that if RestRoute uses .routeId() instead of .id(), e.g. rest().get().routeId("myRoute1").to("log:foo"), then one of the two routes will not start at all, without throwing an error. Here, the route that is configured first starts, and the other route won’t start. In Camel 3.18, .routeId() is not available for rest routes at all, so no problem there. So, it looks like the order of route configuration was deterministic in Camel 3.18 (here, it seems the route configuration order depended on the name of the class or the package the class is in). In Camel 3.22 it seems this is not deterministic anymore, leading to above-described problems. Please let us know if this behavior is known and if I should create a ticket for it. Thanks