You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Mikael Koskinen <mi...@gmail.com> on 2023/06/02 05:34:55 UTC

Re: 3.20.4 Bug(?): Route's ErrorHandler not working if exception happens on Kamelet

Hey,

I wonder if anyone has any info regarding this issue? It's possible
(and maybe quite likely!) that I'm using the
routeConfiguration/errorHandler incorrectly.

Thanks in advance.

Best regards,
Mikael

pe 19. toukok. 2023 klo 15.24 Mikael Koskinen (mijapkos@gmail.com) kirjoitti:
>
> Hi,
>
> I'm encountering a problem where route configuration's error handler
> isn't run if the exception happens on a Kamelet. Here's the gist with
> tries to show the issue:
> https://gist.githubusercontent.com/mikoskinen/4e3e3a8efdf891890a2a46dfddae1d48/raw/09055bcdc1c2252a77a069fcebd07d6f727db555/camel-yaml-kamelet-errorhandling.yaml
>
> More details:
>
>
> First, here's a (working) version with no Kamelets:
>
> - routeConfiguration:
>     errorHandler:
>       deadLetterChannel:
>         deadLetterUri: direct:errorHandler
>         redeliveryPolicy:
>           maximumRedeliveries: 0
> - route:
>     from:
>       uri: timer:timer
>       steps:
>         - setBody:
>             expression:
>               constant:
>                 expression: Hello World
>         - marshal:
>             json:
>               library: jackson
>               prettyPrint: true
>         - to:
>             uri: https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> - route:
>     from:
>       uri: direct:errorHandler
>       steps:
>         - log:
>             message: Handling error
>             loggingLevel: WARN
>     description: Handle Error
>
> When run, this is what I see in the logs:
>
> 2023-05-19 15:14:13.783 WARN 20268 --- [- timer://timer]
> testing.camel.yaml:25 : Handling error
> 2023-05-19 15:14:14.626 WARN 20268 --- [- timer://timer]
> testing.camel.yaml:25 : Handling error
>
> It is working as I expected.
>
> Now, with a just one change where HTTP component is changed to Kamelet
> HTTP Sink and I'm getting completely different result.
>
> - routeConfiguration:
>     errorHandler:
>       deadLetterChannel:
>         deadLetterUri: direct:errorHandler
>         redeliveryPolicy:
>           maximumRedeliveries: 0
> - route:
>     from:
>       uri: timer:timer
>       steps:
>         - setBody:
>             expression:
>               constant:
>                 expression: Hello World
>         - marshal:
>             json:
>               library: jackson
>               prettyPrint: true
>         - to:
>             uri: kamelet:http-sink
>             parameters:
>               url: https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> - route:
>     from:
>       uri: direct:errorHandler
>       steps:
>         - log:
>             message: Handling error
>             loggingLevel: WARN
>     description: Handle Error
>
> Now when run I'm getting the stacktrace and there's no "Handling
> error" to be found:
>
> 2023-05-19 15:20:22.084 INFO 17192 --- [ main]
> el.impl.engine.AbstractCamelContext : Apache Camel 3.20.4 (tes
> ting) started in 4s854ms (build:196ms init:3s906ms start:752ms JVM-uptime:8s)
> 2023-05-19 15:20:23.165 ERROR 17192 --- [- timer://timer]
> or.errorhandler.DefaultErrorHandler : Failed delivery for (Mes
> sageId: B24BA7702CBB985-0000000000000000 on ExchangeId:
> B24BA7702CBB985-0000000000000000). Exhausted after delivery atte
> mpt: 1 caught: java.net.UnknownHostException: No such host is known
> (webhook.sitessss)
>
> Message History
> ------------------------------------------------------------------------------------------------------------------------
> ---------------
> Source ID Processor
> Elapsed (ms)
> testing.camel.yaml:9 route1/route1 from[timer://timer]
> 2701025406
> testing.camel.yaml:11 route1/setBody1 setBody[constant{Hello World}]
> 2
> testing.camel.yaml:15 route1/marshal1
> marshal[org.apache.camel.model.dataformat.JsonDa
>
> A bug or do I have to configure something more to get the kamelet to
> use the route's error handler?
>
> Best regards,
> Mikael

Re: 3.20.4 Bug(?): Route's ErrorHandler not working if exception happens on Kamelet

Posted by Mikael Koskinen <mi...@gmail.com>.
Hi,

Great to hear, thank you!

On Tuesday, June 13, 2023, Claus Ibsen <cl...@gmail.com> wrote:

> Hi
>
> Okay so your use-cases will then work out of the box in 3.20.6 onwards.
>
> On Tue, Jun 13, 2023 at 2:59 PM Claus Ibsen <cl...@gmail.com> wrote:
>
> > Hi
> >
> > I tracked down what I consider a little bug
> > https://issues.apache.org/jira/browse/CAMEL-19443
> >
> > With the bug fix then this use-case from Mikael works on 3.20.x as well.
> >
> > The other ticket CAMEL-19411 to regard kameelts as "black box" still
> > stands. However this is maybe a different concept that regular route
> > templates that would not.
> > So we may need to consider CAMEL-19411 whether we want to do this in
> Camel
> > v4 or not.
> >
> >
> >
> > On Sat, Jun 3, 2023 at 10:48 AM Claus Ibsen <cl...@gmail.com>
> wrote:
> >
> >> Hi
> >>
> >> Yes its a good idea to make kamelets like a "black box" and they should
> >> not have any error handling (noErrorHandler), then
> >> they are like calling a component.
> >>
> >> We can add an option to the kamelet component that can turn on old
> >> behaviour for users that somehow want the old way (just in case).
> >> https://issues.apache.org/jira/browse/CAMEL-19411
> >>
> >>
> >> On Fri, Jun 2, 2023 at 11:40 AM Mikael Koskinen <mi...@gmail.com>
> >> wrote:
> >>
> >>> Hi,
> >>>
> >>> Thank you for the replies. It would be great if the Kamelets could
> >>> inherit the configuration as modifying the Kamelet specifications is
> >>> mostly out of the question as we're using the stock/built-in Kamelets,
> >>> like http-sink etc. I think this is quite a big issue (for me at least
> >>> :)) as it means that we really can't use the Kamelets from our routes
> >>> if we need to deal with errors in a specific way. And we do. The
> >>> documentation states that the Kamelet should act like a
> >>> direct-component but in this regard it doesn't.
> >>>
> >>> Without knowing the internals of Apache Camel that well, I wonder if
> >>> this is something that could be changed on how the Kamelet Component
> >>> is implemented? Would it be possible to pass the route configuration
> >>> to the RouteDefinition, which is (I think) created in the
> >>> Kamelet.java/templateToRoute?
> >>>
> >>> Best regards,
> >>> Mikael
> >>>
> >>> pe 2. kesäk. 2023 klo 11.10 Andrea Cosentino (ancosen@gmail.com)
> >>> kirjoitti:
> >>> >
> >>> > But it's not with kamelets it's a plain route
> >>> >
> >>> > Il ven 2 giu 2023, 10:08 Andrea Cosentino <an...@gmail.com> ha
> >>> scritto:
> >>> >
> >>> > > There is one example in the camel-kamelets-example repo:
> >>> > >
> >>> > >
> >>> > >
> >>> https://github.com/apache/camel-kamelets-examples/tree/
> main/jbang/error-handler
> >>> > >
> >>> > > Il ven 2 giu 2023, 10:03 Pasquale Congiusti <
> >>> pasquale.congiusti@gmail.com>
> >>> > > ha scritto:
> >>> > >
> >>> > >> Hello,
> >>> > >> Error handler should be managed differently in Kamelets. Basically
> >>> the
> >>> > >> problem is that a Kamelet is a RouteTemplate, so it is like a new
> >>> Route
> >>> > >> and
> >>> > >> won't "inherit" the configuration you've defined in the original
> >>> route. I
> >>> > >> think you need to define your error inside the Kamelet
> specification
> >>> > >> (which
> >>> > >> it's not a very nice design). In Camel K, we've created a layer on
> >>> top of
> >>> > >> it inside the runtime, in order to let the user define the error
> >>> handling
> >>> > >> in the Binding [1].
> >>> > >>
> >>> > >> We had some draft work [2] to enhance that, expecting a similar
> >>> global
> >>> > >> mechanism in Camel. However, I haven't followed by near the recent
> >>> > >> developments in Camel 4 to tell you if this is going to be
> included
> >>> in the
> >>> > >> new version or not.
> >>> > >>
> >>> > >> Regards,
> >>> > >> Pasquale.
> >>> > >>
> >>> > >> [1]
> >>> > >>
> >>> > >>
> >>> https://camel.apache.org/camel-k/1.12.x/kamelets/
> kameletbindings-error-handler.html
> >>> > >> [2] https://github.com/apache/camel-k-runtime/pull/868
> >>> > >>
> >>> > >> On Fri, Jun 2, 2023 at 7:35 AM Mikael Koskinen <
> mijapkos@gmail.com>
> >>> > >> wrote:
> >>> > >>
> >>> > >> > Hey,
> >>> > >> >
> >>> > >> > I wonder if anyone has any info regarding this issue? It's
> >>> possible
> >>> > >> > (and maybe quite likely!) that I'm using the
> >>> > >> > routeConfiguration/errorHandler incorrectly.
> >>> > >> >
> >>> > >> > Thanks in advance.
> >>> > >> >
> >>> > >> > Best regards,
> >>> > >> > Mikael
> >>> > >> >
> >>> > >> > pe 19. toukok. 2023 klo 15.24 Mikael Koskinen (
> mijapkos@gmail.com
> >>> )
> >>> > >> > kirjoitti:
> >>> > >> > >
> >>> > >> > > Hi,
> >>> > >> > >
> >>> > >> > > I'm encountering a problem where route configuration's error
> >>> handler
> >>> > >> > > isn't run if the exception happens on a Kamelet. Here's the
> >>> gist with
> >>> > >> > > tries to show the issue:
> >>> > >> > >
> >>> > >> >
> >>> > >>
> >>> https://gist.githubusercontent.com/mikoskinen/
> 4e3e3a8efdf891890a2a46dfddae1d48/raw/09055bcdc1c2252a77a069fcebd07d
> 6f727db555/camel-yaml-kamelet-errorhandling.yaml
> >>> > >> > >
> >>> > >> > > More details:
> >>> > >> > >
> >>> > >> > >
> >>> > >> > > First, here's a (working) version with no Kamelets:
> >>> > >> > >
> >>> > >> > > - routeConfiguration:
> >>> > >> > >     errorHandler:
> >>> > >> > >       deadLetterChannel:
> >>> > >> > >         deadLetterUri: direct:errorHandler
> >>> > >> > >         redeliveryPolicy:
> >>> > >> > >           maximumRedeliveries: 0
> >>> > >> > > - route:
> >>> > >> > >     from:
> >>> > >> > >       uri: timer:timer
> >>> > >> > >       steps:
> >>> > >> > >         - setBody:
> >>> > >> > >             expression:
> >>> > >> > >               constant:
> >>> > >> > >                 expression: Hello World
> >>> > >> > >         - marshal:
> >>> > >> > >             json:
> >>> > >> > >               library: jackson
> >>> > >> > >               prettyPrint: true
> >>> > >> > >         - to:
> >>> > >> > >             uri:
> >>> > >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> >>> > >> > > - route:
> >>> > >> > >     from:
> >>> > >> > >       uri: direct:errorHandler
> >>> > >> > >       steps:
> >>> > >> > >         - log:
> >>> > >> > >             message: Handling error
> >>> > >> > >             loggingLevel: WARN
> >>> > >> > >     description: Handle Error
> >>> > >> > >
> >>> > >> > > When run, this is what I see in the logs:
> >>> > >> > >
> >>> > >> > > 2023-05-19 15:14:13.783 WARN 20268 --- [- timer://timer]
> >>> > >> > > testing.camel.yaml:25 : Handling error
> >>> > >> > > 2023-05-19 15:14:14.626 WARN 20268 --- [- timer://timer]
> >>> > >> > > testing.camel.yaml:25 : Handling error
> >>> > >> > >
> >>> > >> > > It is working as I expected.
> >>> > >> > >
> >>> > >> > > Now, with a just one change where HTTP component is changed to
> >>> Kamelet
> >>> > >> > > HTTP Sink and I'm getting completely different result.
> >>> > >> > >
> >>> > >> > > - routeConfiguration:
> >>> > >> > >     errorHandler:
> >>> > >> > >       deadLetterChannel:
> >>> > >> > >         deadLetterUri: direct:errorHandler
> >>> > >> > >         redeliveryPolicy:
> >>> > >> > >           maximumRedeliveries: 0
> >>> > >> > > - route:
> >>> > >> > >     from:
> >>> > >> > >       uri: timer:timer
> >>> > >> > >       steps:
> >>> > >> > >         - setBody:
> >>> > >> > >             expression:
> >>> > >> > >               constant:
> >>> > >> > >                 expression: Hello World
> >>> > >> > >         - marshal:
> >>> > >> > >             json:
> >>> > >> > >               library: jackson
> >>> > >> > >               prettyPrint: true
> >>> > >> > >         - to:
> >>> > >> > >             uri: kamelet:http-sink
> >>> > >> > >             parameters:
> >>> > >> > >               url:
> >>> > >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> >>> > >> > > - route:
> >>> > >> > >     from:
> >>> > >> > >       uri: direct:errorHandler
> >>> > >> > >       steps:
> >>> > >> > >         - log:
> >>> > >> > >             message: Handling error
> >>> > >> > >             loggingLevel: WARN
> >>> > >> > >     description: Handle Error
> >>> > >> > >
> >>> > >> > > Now when run I'm getting the stacktrace and there's no
> "Handling
> >>> > >> > > error" to be found:
> >>> > >> > >
> >>> > >> > > 2023-05-19 15:20:22.084 INFO 17192 --- [ main]
> >>> > >> > > el.impl.engine.AbstractCamelContext : Apache Camel 3.20.4
> (tes
> >>> > >> > > ting) started in 4s854ms (build:196ms init:3s906ms start:752ms
> >>> > >> > JVM-uptime:8s)
> >>> > >> > > 2023-05-19 15:20:23.165 ERROR 17192 --- [- timer://timer]
> >>> > >> > > or.errorhandler.DefaultErrorHandler : Failed delivery for
> (Mes
> >>> > >> > > sageId: B24BA7702CBB985-0000000000000000 on ExchangeId:
> >>> > >> > > B24BA7702CBB985-0000000000000000). Exhausted after delivery
> atte
> >>> > >> > > mpt: 1 caught: java.net.UnknownHostException: No such host is
> >>> known
> >>> > >> > > (webhook.sitessss)
> >>> > >> > >
> >>> > >> > > Message History
> >>> > >> > >
> >>> > >> >
> >>> > >>
> >>> ------------------------------------------------------------
> ------------------------------------------------------------
> >>> > >> > > ---------------
> >>> > >> > > Source ID Processor
> >>> > >> > > Elapsed (ms)
> >>> > >> > > testing.camel.yaml:9 route1/route1 from[timer://timer]
> >>> > >> > > 2701025406
> >>> > >> > > testing.camel.yaml:11 route1/setBody1 setBody[constant{Hello
> >>> World}]
> >>> > >> > > 2
> >>> > >> > > testing.camel.yaml:15 route1/marshal1
> >>> > >> > > marshal[org.apache.camel.model.dataformat.JsonDa
> >>> > >> > >
> >>> > >> > > A bug or do I have to configure something more to get the
> >>> kamelet to
> >>> > >> > > use the route's error handler?
> >>> > >> > >
> >>> > >> > > Best regards,
> >>> > >> > > Mikael
> >>> > >> >
> >>> > >>
> >>> > >
> >>>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> -----------------
> >> @davsclaus
> >> Camel in Action 2: https://www.manning.com/ibsen2
> >>
> >
> >
> > --
> > 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: 3.20.4 Bug(?): Route's ErrorHandler not working if exception happens on Kamelet

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Okay so your use-cases will then work out of the box in 3.20.6 onwards.

On Tue, Jun 13, 2023 at 2:59 PM Claus Ibsen <cl...@gmail.com> wrote:

> Hi
>
> I tracked down what I consider a little bug
> https://issues.apache.org/jira/browse/CAMEL-19443
>
> With the bug fix then this use-case from Mikael works on 3.20.x as well.
>
> The other ticket CAMEL-19411 to regard kameelts as "black box" still
> stands. However this is maybe a different concept that regular route
> templates that would not.
> So we may need to consider CAMEL-19411 whether we want to do this in Camel
> v4 or not.
>
>
>
> On Sat, Jun 3, 2023 at 10:48 AM Claus Ibsen <cl...@gmail.com> wrote:
>
>> Hi
>>
>> Yes its a good idea to make kamelets like a "black box" and they should
>> not have any error handling (noErrorHandler), then
>> they are like calling a component.
>>
>> We can add an option to the kamelet component that can turn on old
>> behaviour for users that somehow want the old way (just in case).
>> https://issues.apache.org/jira/browse/CAMEL-19411
>>
>>
>> On Fri, Jun 2, 2023 at 11:40 AM Mikael Koskinen <mi...@gmail.com>
>> wrote:
>>
>>> Hi,
>>>
>>> Thank you for the replies. It would be great if the Kamelets could
>>> inherit the configuration as modifying the Kamelet specifications is
>>> mostly out of the question as we're using the stock/built-in Kamelets,
>>> like http-sink etc. I think this is quite a big issue (for me at least
>>> :)) as it means that we really can't use the Kamelets from our routes
>>> if we need to deal with errors in a specific way. And we do. The
>>> documentation states that the Kamelet should act like a
>>> direct-component but in this regard it doesn't.
>>>
>>> Without knowing the internals of Apache Camel that well, I wonder if
>>> this is something that could be changed on how the Kamelet Component
>>> is implemented? Would it be possible to pass the route configuration
>>> to the RouteDefinition, which is (I think) created in the
>>> Kamelet.java/templateToRoute?
>>>
>>> Best regards,
>>> Mikael
>>>
>>> pe 2. kesäk. 2023 klo 11.10 Andrea Cosentino (ancosen@gmail.com)
>>> kirjoitti:
>>> >
>>> > But it's not with kamelets it's a plain route
>>> >
>>> > Il ven 2 giu 2023, 10:08 Andrea Cosentino <an...@gmail.com> ha
>>> scritto:
>>> >
>>> > > There is one example in the camel-kamelets-example repo:
>>> > >
>>> > >
>>> > >
>>> https://github.com/apache/camel-kamelets-examples/tree/main/jbang/error-handler
>>> > >
>>> > > Il ven 2 giu 2023, 10:03 Pasquale Congiusti <
>>> pasquale.congiusti@gmail.com>
>>> > > ha scritto:
>>> > >
>>> > >> Hello,
>>> > >> Error handler should be managed differently in Kamelets. Basically
>>> the
>>> > >> problem is that a Kamelet is a RouteTemplate, so it is like a new
>>> Route
>>> > >> and
>>> > >> won't "inherit" the configuration you've defined in the original
>>> route. I
>>> > >> think you need to define your error inside the Kamelet specification
>>> > >> (which
>>> > >> it's not a very nice design). In Camel K, we've created a layer on
>>> top of
>>> > >> it inside the runtime, in order to let the user define the error
>>> handling
>>> > >> in the Binding [1].
>>> > >>
>>> > >> We had some draft work [2] to enhance that, expecting a similar
>>> global
>>> > >> mechanism in Camel. However, I haven't followed by near the recent
>>> > >> developments in Camel 4 to tell you if this is going to be included
>>> in the
>>> > >> new version or not.
>>> > >>
>>> > >> Regards,
>>> > >> Pasquale.
>>> > >>
>>> > >> [1]
>>> > >>
>>> > >>
>>> https://camel.apache.org/camel-k/1.12.x/kamelets/kameletbindings-error-handler.html
>>> > >> [2] https://github.com/apache/camel-k-runtime/pull/868
>>> > >>
>>> > >> On Fri, Jun 2, 2023 at 7:35 AM Mikael Koskinen <mi...@gmail.com>
>>> > >> wrote:
>>> > >>
>>> > >> > Hey,
>>> > >> >
>>> > >> > I wonder if anyone has any info regarding this issue? It's
>>> possible
>>> > >> > (and maybe quite likely!) that I'm using the
>>> > >> > routeConfiguration/errorHandler incorrectly.
>>> > >> >
>>> > >> > Thanks in advance.
>>> > >> >
>>> > >> > Best regards,
>>> > >> > Mikael
>>> > >> >
>>> > >> > pe 19. toukok. 2023 klo 15.24 Mikael Koskinen (mijapkos@gmail.com
>>> )
>>> > >> > kirjoitti:
>>> > >> > >
>>> > >> > > Hi,
>>> > >> > >
>>> > >> > > I'm encountering a problem where route configuration's error
>>> handler
>>> > >> > > isn't run if the exception happens on a Kamelet. Here's the
>>> gist with
>>> > >> > > tries to show the issue:
>>> > >> > >
>>> > >> >
>>> > >>
>>> https://gist.githubusercontent.com/mikoskinen/4e3e3a8efdf891890a2a46dfddae1d48/raw/09055bcdc1c2252a77a069fcebd07d6f727db555/camel-yaml-kamelet-errorhandling.yaml
>>> > >> > >
>>> > >> > > More details:
>>> > >> > >
>>> > >> > >
>>> > >> > > First, here's a (working) version with no Kamelets:
>>> > >> > >
>>> > >> > > - routeConfiguration:
>>> > >> > >     errorHandler:
>>> > >> > >       deadLetterChannel:
>>> > >> > >         deadLetterUri: direct:errorHandler
>>> > >> > >         redeliveryPolicy:
>>> > >> > >           maximumRedeliveries: 0
>>> > >> > > - route:
>>> > >> > >     from:
>>> > >> > >       uri: timer:timer
>>> > >> > >       steps:
>>> > >> > >         - setBody:
>>> > >> > >             expression:
>>> > >> > >               constant:
>>> > >> > >                 expression: Hello World
>>> > >> > >         - marshal:
>>> > >> > >             json:
>>> > >> > >               library: jackson
>>> > >> > >               prettyPrint: true
>>> > >> > >         - to:
>>> > >> > >             uri:
>>> > >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
>>> > >> > > - route:
>>> > >> > >     from:
>>> > >> > >       uri: direct:errorHandler
>>> > >> > >       steps:
>>> > >> > >         - log:
>>> > >> > >             message: Handling error
>>> > >> > >             loggingLevel: WARN
>>> > >> > >     description: Handle Error
>>> > >> > >
>>> > >> > > When run, this is what I see in the logs:
>>> > >> > >
>>> > >> > > 2023-05-19 15:14:13.783 WARN 20268 --- [- timer://timer]
>>> > >> > > testing.camel.yaml:25 : Handling error
>>> > >> > > 2023-05-19 15:14:14.626 WARN 20268 --- [- timer://timer]
>>> > >> > > testing.camel.yaml:25 : Handling error
>>> > >> > >
>>> > >> > > It is working as I expected.
>>> > >> > >
>>> > >> > > Now, with a just one change where HTTP component is changed to
>>> Kamelet
>>> > >> > > HTTP Sink and I'm getting completely different result.
>>> > >> > >
>>> > >> > > - routeConfiguration:
>>> > >> > >     errorHandler:
>>> > >> > >       deadLetterChannel:
>>> > >> > >         deadLetterUri: direct:errorHandler
>>> > >> > >         redeliveryPolicy:
>>> > >> > >           maximumRedeliveries: 0
>>> > >> > > - route:
>>> > >> > >     from:
>>> > >> > >       uri: timer:timer
>>> > >> > >       steps:
>>> > >> > >         - setBody:
>>> > >> > >             expression:
>>> > >> > >               constant:
>>> > >> > >                 expression: Hello World
>>> > >> > >         - marshal:
>>> > >> > >             json:
>>> > >> > >               library: jackson
>>> > >> > >               prettyPrint: true
>>> > >> > >         - to:
>>> > >> > >             uri: kamelet:http-sink
>>> > >> > >             parameters:
>>> > >> > >               url:
>>> > >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
>>> > >> > > - route:
>>> > >> > >     from:
>>> > >> > >       uri: direct:errorHandler
>>> > >> > >       steps:
>>> > >> > >         - log:
>>> > >> > >             message: Handling error
>>> > >> > >             loggingLevel: WARN
>>> > >> > >     description: Handle Error
>>> > >> > >
>>> > >> > > Now when run I'm getting the stacktrace and there's no "Handling
>>> > >> > > error" to be found:
>>> > >> > >
>>> > >> > > 2023-05-19 15:20:22.084 INFO 17192 --- [ main]
>>> > >> > > el.impl.engine.AbstractCamelContext : Apache Camel 3.20.4 (tes
>>> > >> > > ting) started in 4s854ms (build:196ms init:3s906ms start:752ms
>>> > >> > JVM-uptime:8s)
>>> > >> > > 2023-05-19 15:20:23.165 ERROR 17192 --- [- timer://timer]
>>> > >> > > or.errorhandler.DefaultErrorHandler : Failed delivery for (Mes
>>> > >> > > sageId: B24BA7702CBB985-0000000000000000 on ExchangeId:
>>> > >> > > B24BA7702CBB985-0000000000000000). Exhausted after delivery atte
>>> > >> > > mpt: 1 caught: java.net.UnknownHostException: No such host is
>>> known
>>> > >> > > (webhook.sitessss)
>>> > >> > >
>>> > >> > > Message History
>>> > >> > >
>>> > >> >
>>> > >>
>>> ------------------------------------------------------------------------------------------------------------------------
>>> > >> > > ---------------
>>> > >> > > Source ID Processor
>>> > >> > > Elapsed (ms)
>>> > >> > > testing.camel.yaml:9 route1/route1 from[timer://timer]
>>> > >> > > 2701025406
>>> > >> > > testing.camel.yaml:11 route1/setBody1 setBody[constant{Hello
>>> World}]
>>> > >> > > 2
>>> > >> > > testing.camel.yaml:15 route1/marshal1
>>> > >> > > marshal[org.apache.camel.model.dataformat.JsonDa
>>> > >> > >
>>> > >> > > A bug or do I have to configure something more to get the
>>> kamelet to
>>> > >> > > use the route's error handler?
>>> > >> > >
>>> > >> > > Best regards,
>>> > >> > > Mikael
>>> > >> >
>>> > >>
>>> > >
>>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> @davsclaus
>> Camel in Action 2: https://www.manning.com/ibsen2
>>
>
>
> --
> 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: 3.20.4 Bug(?): Route's ErrorHandler not working if exception happens on Kamelet

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

I tracked down what I consider a little bug
https://issues.apache.org/jira/browse/CAMEL-19443

With the bug fix then this use-case from Mikael works on 3.20.x as well.

The other ticket CAMEL-19411 to regard kameelts as "black box" still
stands. However this is maybe a different concept that regular route
templates that would not.
So we may need to consider CAMEL-19411 whether we want to do this in Camel
v4 or not.



On Sat, Jun 3, 2023 at 10:48 AM Claus Ibsen <cl...@gmail.com> wrote:

> Hi
>
> Yes its a good idea to make kamelets like a "black box" and they should
> not have any error handling (noErrorHandler), then
> they are like calling a component.
>
> We can add an option to the kamelet component that can turn on old
> behaviour for users that somehow want the old way (just in case).
> https://issues.apache.org/jira/browse/CAMEL-19411
>
>
> On Fri, Jun 2, 2023 at 11:40 AM Mikael Koskinen <mi...@gmail.com>
> wrote:
>
>> Hi,
>>
>> Thank you for the replies. It would be great if the Kamelets could
>> inherit the configuration as modifying the Kamelet specifications is
>> mostly out of the question as we're using the stock/built-in Kamelets,
>> like http-sink etc. I think this is quite a big issue (for me at least
>> :)) as it means that we really can't use the Kamelets from our routes
>> if we need to deal with errors in a specific way. And we do. The
>> documentation states that the Kamelet should act like a
>> direct-component but in this regard it doesn't.
>>
>> Without knowing the internals of Apache Camel that well, I wonder if
>> this is something that could be changed on how the Kamelet Component
>> is implemented? Would it be possible to pass the route configuration
>> to the RouteDefinition, which is (I think) created in the
>> Kamelet.java/templateToRoute?
>>
>> Best regards,
>> Mikael
>>
>> pe 2. kesäk. 2023 klo 11.10 Andrea Cosentino (ancosen@gmail.com)
>> kirjoitti:
>> >
>> > But it's not with kamelets it's a plain route
>> >
>> > Il ven 2 giu 2023, 10:08 Andrea Cosentino <an...@gmail.com> ha
>> scritto:
>> >
>> > > There is one example in the camel-kamelets-example repo:
>> > >
>> > >
>> > >
>> https://github.com/apache/camel-kamelets-examples/tree/main/jbang/error-handler
>> > >
>> > > Il ven 2 giu 2023, 10:03 Pasquale Congiusti <
>> pasquale.congiusti@gmail.com>
>> > > ha scritto:
>> > >
>> > >> Hello,
>> > >> Error handler should be managed differently in Kamelets. Basically
>> the
>> > >> problem is that a Kamelet is a RouteTemplate, so it is like a new
>> Route
>> > >> and
>> > >> won't "inherit" the configuration you've defined in the original
>> route. I
>> > >> think you need to define your error inside the Kamelet specification
>> > >> (which
>> > >> it's not a very nice design). In Camel K, we've created a layer on
>> top of
>> > >> it inside the runtime, in order to let the user define the error
>> handling
>> > >> in the Binding [1].
>> > >>
>> > >> We had some draft work [2] to enhance that, expecting a similar
>> global
>> > >> mechanism in Camel. However, I haven't followed by near the recent
>> > >> developments in Camel 4 to tell you if this is going to be included
>> in the
>> > >> new version or not.
>> > >>
>> > >> Regards,
>> > >> Pasquale.
>> > >>
>> > >> [1]
>> > >>
>> > >>
>> https://camel.apache.org/camel-k/1.12.x/kamelets/kameletbindings-error-handler.html
>> > >> [2] https://github.com/apache/camel-k-runtime/pull/868
>> > >>
>> > >> On Fri, Jun 2, 2023 at 7:35 AM Mikael Koskinen <mi...@gmail.com>
>> > >> wrote:
>> > >>
>> > >> > Hey,
>> > >> >
>> > >> > I wonder if anyone has any info regarding this issue? It's possible
>> > >> > (and maybe quite likely!) that I'm using the
>> > >> > routeConfiguration/errorHandler incorrectly.
>> > >> >
>> > >> > Thanks in advance.
>> > >> >
>> > >> > Best regards,
>> > >> > Mikael
>> > >> >
>> > >> > pe 19. toukok. 2023 klo 15.24 Mikael Koskinen (mijapkos@gmail.com)
>> > >> > kirjoitti:
>> > >> > >
>> > >> > > Hi,
>> > >> > >
>> > >> > > I'm encountering a problem where route configuration's error
>> handler
>> > >> > > isn't run if the exception happens on a Kamelet. Here's the gist
>> with
>> > >> > > tries to show the issue:
>> > >> > >
>> > >> >
>> > >>
>> https://gist.githubusercontent.com/mikoskinen/4e3e3a8efdf891890a2a46dfddae1d48/raw/09055bcdc1c2252a77a069fcebd07d6f727db555/camel-yaml-kamelet-errorhandling.yaml
>> > >> > >
>> > >> > > More details:
>> > >> > >
>> > >> > >
>> > >> > > First, here's a (working) version with no Kamelets:
>> > >> > >
>> > >> > > - routeConfiguration:
>> > >> > >     errorHandler:
>> > >> > >       deadLetterChannel:
>> > >> > >         deadLetterUri: direct:errorHandler
>> > >> > >         redeliveryPolicy:
>> > >> > >           maximumRedeliveries: 0
>> > >> > > - route:
>> > >> > >     from:
>> > >> > >       uri: timer:timer
>> > >> > >       steps:
>> > >> > >         - setBody:
>> > >> > >             expression:
>> > >> > >               constant:
>> > >> > >                 expression: Hello World
>> > >> > >         - marshal:
>> > >> > >             json:
>> > >> > >               library: jackson
>> > >> > >               prettyPrint: true
>> > >> > >         - to:
>> > >> > >             uri:
>> > >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
>> > >> > > - route:
>> > >> > >     from:
>> > >> > >       uri: direct:errorHandler
>> > >> > >       steps:
>> > >> > >         - log:
>> > >> > >             message: Handling error
>> > >> > >             loggingLevel: WARN
>> > >> > >     description: Handle Error
>> > >> > >
>> > >> > > When run, this is what I see in the logs:
>> > >> > >
>> > >> > > 2023-05-19 15:14:13.783 WARN 20268 --- [- timer://timer]
>> > >> > > testing.camel.yaml:25 : Handling error
>> > >> > > 2023-05-19 15:14:14.626 WARN 20268 --- [- timer://timer]
>> > >> > > testing.camel.yaml:25 : Handling error
>> > >> > >
>> > >> > > It is working as I expected.
>> > >> > >
>> > >> > > Now, with a just one change where HTTP component is changed to
>> Kamelet
>> > >> > > HTTP Sink and I'm getting completely different result.
>> > >> > >
>> > >> > > - routeConfiguration:
>> > >> > >     errorHandler:
>> > >> > >       deadLetterChannel:
>> > >> > >         deadLetterUri: direct:errorHandler
>> > >> > >         redeliveryPolicy:
>> > >> > >           maximumRedeliveries: 0
>> > >> > > - route:
>> > >> > >     from:
>> > >> > >       uri: timer:timer
>> > >> > >       steps:
>> > >> > >         - setBody:
>> > >> > >             expression:
>> > >> > >               constant:
>> > >> > >                 expression: Hello World
>> > >> > >         - marshal:
>> > >> > >             json:
>> > >> > >               library: jackson
>> > >> > >               prettyPrint: true
>> > >> > >         - to:
>> > >> > >             uri: kamelet:http-sink
>> > >> > >             parameters:
>> > >> > >               url:
>> > >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
>> > >> > > - route:
>> > >> > >     from:
>> > >> > >       uri: direct:errorHandler
>> > >> > >       steps:
>> > >> > >         - log:
>> > >> > >             message: Handling error
>> > >> > >             loggingLevel: WARN
>> > >> > >     description: Handle Error
>> > >> > >
>> > >> > > Now when run I'm getting the stacktrace and there's no "Handling
>> > >> > > error" to be found:
>> > >> > >
>> > >> > > 2023-05-19 15:20:22.084 INFO 17192 --- [ main]
>> > >> > > el.impl.engine.AbstractCamelContext : Apache Camel 3.20.4 (tes
>> > >> > > ting) started in 4s854ms (build:196ms init:3s906ms start:752ms
>> > >> > JVM-uptime:8s)
>> > >> > > 2023-05-19 15:20:23.165 ERROR 17192 --- [- timer://timer]
>> > >> > > or.errorhandler.DefaultErrorHandler : Failed delivery for (Mes
>> > >> > > sageId: B24BA7702CBB985-0000000000000000 on ExchangeId:
>> > >> > > B24BA7702CBB985-0000000000000000). Exhausted after delivery atte
>> > >> > > mpt: 1 caught: java.net.UnknownHostException: No such host is
>> known
>> > >> > > (webhook.sitessss)
>> > >> > >
>> > >> > > Message History
>> > >> > >
>> > >> >
>> > >>
>> ------------------------------------------------------------------------------------------------------------------------
>> > >> > > ---------------
>> > >> > > Source ID Processor
>> > >> > > Elapsed (ms)
>> > >> > > testing.camel.yaml:9 route1/route1 from[timer://timer]
>> > >> > > 2701025406
>> > >> > > testing.camel.yaml:11 route1/setBody1 setBody[constant{Hello
>> World}]
>> > >> > > 2
>> > >> > > testing.camel.yaml:15 route1/marshal1
>> > >> > > marshal[org.apache.camel.model.dataformat.JsonDa
>> > >> > >
>> > >> > > A bug or do I have to configure something more to get the
>> kamelet to
>> > >> > > use the route's error handler?
>> > >> > >
>> > >> > > Best regards,
>> > >> > > Mikael
>> > >> >
>> > >>
>> > >
>>
>
>
> --
> 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: 3.20.4 Bug(?): Route's ErrorHandler not working if exception happens on Kamelet

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Yes its a good idea to make kamelets like a "black box" and they should not
have any error handling (noErrorHandler), then
they are like calling a component.

We can add an option to the kamelet component that can turn on old
behaviour for users that somehow want the old way (just in case).
https://issues.apache.org/jira/browse/CAMEL-19411


On Fri, Jun 2, 2023 at 11:40 AM Mikael Koskinen <mi...@gmail.com> wrote:

> Hi,
>
> Thank you for the replies. It would be great if the Kamelets could
> inherit the configuration as modifying the Kamelet specifications is
> mostly out of the question as we're using the stock/built-in Kamelets,
> like http-sink etc. I think this is quite a big issue (for me at least
> :)) as it means that we really can't use the Kamelets from our routes
> if we need to deal with errors in a specific way. And we do. The
> documentation states that the Kamelet should act like a
> direct-component but in this regard it doesn't.
>
> Without knowing the internals of Apache Camel that well, I wonder if
> this is something that could be changed on how the Kamelet Component
> is implemented? Would it be possible to pass the route configuration
> to the RouteDefinition, which is (I think) created in the
> Kamelet.java/templateToRoute?
>
> Best regards,
> Mikael
>
> pe 2. kesäk. 2023 klo 11.10 Andrea Cosentino (ancosen@gmail.com)
> kirjoitti:
> >
> > But it's not with kamelets it's a plain route
> >
> > Il ven 2 giu 2023, 10:08 Andrea Cosentino <an...@gmail.com> ha
> scritto:
> >
> > > There is one example in the camel-kamelets-example repo:
> > >
> > >
> > >
> https://github.com/apache/camel-kamelets-examples/tree/main/jbang/error-handler
> > >
> > > Il ven 2 giu 2023, 10:03 Pasquale Congiusti <
> pasquale.congiusti@gmail.com>
> > > ha scritto:
> > >
> > >> Hello,
> > >> Error handler should be managed differently in Kamelets. Basically the
> > >> problem is that a Kamelet is a RouteTemplate, so it is like a new
> Route
> > >> and
> > >> won't "inherit" the configuration you've defined in the original
> route. I
> > >> think you need to define your error inside the Kamelet specification
> > >> (which
> > >> it's not a very nice design). In Camel K, we've created a layer on
> top of
> > >> it inside the runtime, in order to let the user define the error
> handling
> > >> in the Binding [1].
> > >>
> > >> We had some draft work [2] to enhance that, expecting a similar global
> > >> mechanism in Camel. However, I haven't followed by near the recent
> > >> developments in Camel 4 to tell you if this is going to be included
> in the
> > >> new version or not.
> > >>
> > >> Regards,
> > >> Pasquale.
> > >>
> > >> [1]
> > >>
> > >>
> https://camel.apache.org/camel-k/1.12.x/kamelets/kameletbindings-error-handler.html
> > >> [2] https://github.com/apache/camel-k-runtime/pull/868
> > >>
> > >> On Fri, Jun 2, 2023 at 7:35 AM Mikael Koskinen <mi...@gmail.com>
> > >> wrote:
> > >>
> > >> > Hey,
> > >> >
> > >> > I wonder if anyone has any info regarding this issue? It's possible
> > >> > (and maybe quite likely!) that I'm using the
> > >> > routeConfiguration/errorHandler incorrectly.
> > >> >
> > >> > Thanks in advance.
> > >> >
> > >> > Best regards,
> > >> > Mikael
> > >> >
> > >> > pe 19. toukok. 2023 klo 15.24 Mikael Koskinen (mijapkos@gmail.com)
> > >> > kirjoitti:
> > >> > >
> > >> > > Hi,
> > >> > >
> > >> > > I'm encountering a problem where route configuration's error
> handler
> > >> > > isn't run if the exception happens on a Kamelet. Here's the gist
> with
> > >> > > tries to show the issue:
> > >> > >
> > >> >
> > >>
> https://gist.githubusercontent.com/mikoskinen/4e3e3a8efdf891890a2a46dfddae1d48/raw/09055bcdc1c2252a77a069fcebd07d6f727db555/camel-yaml-kamelet-errorhandling.yaml
> > >> > >
> > >> > > More details:
> > >> > >
> > >> > >
> > >> > > First, here's a (working) version with no Kamelets:
> > >> > >
> > >> > > - routeConfiguration:
> > >> > >     errorHandler:
> > >> > >       deadLetterChannel:
> > >> > >         deadLetterUri: direct:errorHandler
> > >> > >         redeliveryPolicy:
> > >> > >           maximumRedeliveries: 0
> > >> > > - route:
> > >> > >     from:
> > >> > >       uri: timer:timer
> > >> > >       steps:
> > >> > >         - setBody:
> > >> > >             expression:
> > >> > >               constant:
> > >> > >                 expression: Hello World
> > >> > >         - marshal:
> > >> > >             json:
> > >> > >               library: jackson
> > >> > >               prettyPrint: true
> > >> > >         - to:
> > >> > >             uri:
> > >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> > >> > > - route:
> > >> > >     from:
> > >> > >       uri: direct:errorHandler
> > >> > >       steps:
> > >> > >         - log:
> > >> > >             message: Handling error
> > >> > >             loggingLevel: WARN
> > >> > >     description: Handle Error
> > >> > >
> > >> > > When run, this is what I see in the logs:
> > >> > >
> > >> > > 2023-05-19 15:14:13.783 WARN 20268 --- [- timer://timer]
> > >> > > testing.camel.yaml:25 : Handling error
> > >> > > 2023-05-19 15:14:14.626 WARN 20268 --- [- timer://timer]
> > >> > > testing.camel.yaml:25 : Handling error
> > >> > >
> > >> > > It is working as I expected.
> > >> > >
> > >> > > Now, with a just one change where HTTP component is changed to
> Kamelet
> > >> > > HTTP Sink and I'm getting completely different result.
> > >> > >
> > >> > > - routeConfiguration:
> > >> > >     errorHandler:
> > >> > >       deadLetterChannel:
> > >> > >         deadLetterUri: direct:errorHandler
> > >> > >         redeliveryPolicy:
> > >> > >           maximumRedeliveries: 0
> > >> > > - route:
> > >> > >     from:
> > >> > >       uri: timer:timer
> > >> > >       steps:
> > >> > >         - setBody:
> > >> > >             expression:
> > >> > >               constant:
> > >> > >                 expression: Hello World
> > >> > >         - marshal:
> > >> > >             json:
> > >> > >               library: jackson
> > >> > >               prettyPrint: true
> > >> > >         - to:
> > >> > >             uri: kamelet:http-sink
> > >> > >             parameters:
> > >> > >               url:
> > >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> > >> > > - route:
> > >> > >     from:
> > >> > >       uri: direct:errorHandler
> > >> > >       steps:
> > >> > >         - log:
> > >> > >             message: Handling error
> > >> > >             loggingLevel: WARN
> > >> > >     description: Handle Error
> > >> > >
> > >> > > Now when run I'm getting the stacktrace and there's no "Handling
> > >> > > error" to be found:
> > >> > >
> > >> > > 2023-05-19 15:20:22.084 INFO 17192 --- [ main]
> > >> > > el.impl.engine.AbstractCamelContext : Apache Camel 3.20.4 (tes
> > >> > > ting) started in 4s854ms (build:196ms init:3s906ms start:752ms
> > >> > JVM-uptime:8s)
> > >> > > 2023-05-19 15:20:23.165 ERROR 17192 --- [- timer://timer]
> > >> > > or.errorhandler.DefaultErrorHandler : Failed delivery for (Mes
> > >> > > sageId: B24BA7702CBB985-0000000000000000 on ExchangeId:
> > >> > > B24BA7702CBB985-0000000000000000). Exhausted after delivery atte
> > >> > > mpt: 1 caught: java.net.UnknownHostException: No such host is
> known
> > >> > > (webhook.sitessss)
> > >> > >
> > >> > > Message History
> > >> > >
> > >> >
> > >>
> ------------------------------------------------------------------------------------------------------------------------
> > >> > > ---------------
> > >> > > Source ID Processor
> > >> > > Elapsed (ms)
> > >> > > testing.camel.yaml:9 route1/route1 from[timer://timer]
> > >> > > 2701025406
> > >> > > testing.camel.yaml:11 route1/setBody1 setBody[constant{Hello
> World}]
> > >> > > 2
> > >> > > testing.camel.yaml:15 route1/marshal1
> > >> > > marshal[org.apache.camel.model.dataformat.JsonDa
> > >> > >
> > >> > > A bug or do I have to configure something more to get the kamelet
> to
> > >> > > use the route's error handler?
> > >> > >
> > >> > > Best regards,
> > >> > > Mikael
> > >> >
> > >>
> > >
>


-- 
Claus Ibsen
-----------------
@davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: 3.20.4 Bug(?): Route's ErrorHandler not working if exception happens on Kamelet

Posted by Mikael Koskinen <mi...@gmail.com>.
Hi,

Thank you for the replies. It would be great if the Kamelets could
inherit the configuration as modifying the Kamelet specifications is
mostly out of the question as we're using the stock/built-in Kamelets,
like http-sink etc. I think this is quite a big issue (for me at least
:)) as it means that we really can't use the Kamelets from our routes
if we need to deal with errors in a specific way. And we do. The
documentation states that the Kamelet should act like a
direct-component but in this regard it doesn't.

Without knowing the internals of Apache Camel that well, I wonder if
this is something that could be changed on how the Kamelet Component
is implemented? Would it be possible to pass the route configuration
to the RouteDefinition, which is (I think) created in the
Kamelet.java/templateToRoute?

Best regards,
Mikael

pe 2. kesäk. 2023 klo 11.10 Andrea Cosentino (ancosen@gmail.com) kirjoitti:
>
> But it's not with kamelets it's a plain route
>
> Il ven 2 giu 2023, 10:08 Andrea Cosentino <an...@gmail.com> ha scritto:
>
> > There is one example in the camel-kamelets-example repo:
> >
> >
> > https://github.com/apache/camel-kamelets-examples/tree/main/jbang/error-handler
> >
> > Il ven 2 giu 2023, 10:03 Pasquale Congiusti <pa...@gmail.com>
> > ha scritto:
> >
> >> Hello,
> >> Error handler should be managed differently in Kamelets. Basically the
> >> problem is that a Kamelet is a RouteTemplate, so it is like a new Route
> >> and
> >> won't "inherit" the configuration you've defined in the original route. I
> >> think you need to define your error inside the Kamelet specification
> >> (which
> >> it's not a very nice design). In Camel K, we've created a layer on top of
> >> it inside the runtime, in order to let the user define the error handling
> >> in the Binding [1].
> >>
> >> We had some draft work [2] to enhance that, expecting a similar global
> >> mechanism in Camel. However, I haven't followed by near the recent
> >> developments in Camel 4 to tell you if this is going to be included in the
> >> new version or not.
> >>
> >> Regards,
> >> Pasquale.
> >>
> >> [1]
> >>
> >> https://camel.apache.org/camel-k/1.12.x/kamelets/kameletbindings-error-handler.html
> >> [2] https://github.com/apache/camel-k-runtime/pull/868
> >>
> >> On Fri, Jun 2, 2023 at 7:35 AM Mikael Koskinen <mi...@gmail.com>
> >> wrote:
> >>
> >> > Hey,
> >> >
> >> > I wonder if anyone has any info regarding this issue? It's possible
> >> > (and maybe quite likely!) that I'm using the
> >> > routeConfiguration/errorHandler incorrectly.
> >> >
> >> > Thanks in advance.
> >> >
> >> > Best regards,
> >> > Mikael
> >> >
> >> > pe 19. toukok. 2023 klo 15.24 Mikael Koskinen (mijapkos@gmail.com)
> >> > kirjoitti:
> >> > >
> >> > > Hi,
> >> > >
> >> > > I'm encountering a problem where route configuration's error handler
> >> > > isn't run if the exception happens on a Kamelet. Here's the gist with
> >> > > tries to show the issue:
> >> > >
> >> >
> >> https://gist.githubusercontent.com/mikoskinen/4e3e3a8efdf891890a2a46dfddae1d48/raw/09055bcdc1c2252a77a069fcebd07d6f727db555/camel-yaml-kamelet-errorhandling.yaml
> >> > >
> >> > > More details:
> >> > >
> >> > >
> >> > > First, here's a (working) version with no Kamelets:
> >> > >
> >> > > - routeConfiguration:
> >> > >     errorHandler:
> >> > >       deadLetterChannel:
> >> > >         deadLetterUri: direct:errorHandler
> >> > >         redeliveryPolicy:
> >> > >           maximumRedeliveries: 0
> >> > > - route:
> >> > >     from:
> >> > >       uri: timer:timer
> >> > >       steps:
> >> > >         - setBody:
> >> > >             expression:
> >> > >               constant:
> >> > >                 expression: Hello World
> >> > >         - marshal:
> >> > >             json:
> >> > >               library: jackson
> >> > >               prettyPrint: true
> >> > >         - to:
> >> > >             uri:
> >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> >> > > - route:
> >> > >     from:
> >> > >       uri: direct:errorHandler
> >> > >       steps:
> >> > >         - log:
> >> > >             message: Handling error
> >> > >             loggingLevel: WARN
> >> > >     description: Handle Error
> >> > >
> >> > > When run, this is what I see in the logs:
> >> > >
> >> > > 2023-05-19 15:14:13.783 WARN 20268 --- [- timer://timer]
> >> > > testing.camel.yaml:25 : Handling error
> >> > > 2023-05-19 15:14:14.626 WARN 20268 --- [- timer://timer]
> >> > > testing.camel.yaml:25 : Handling error
> >> > >
> >> > > It is working as I expected.
> >> > >
> >> > > Now, with a just one change where HTTP component is changed to Kamelet
> >> > > HTTP Sink and I'm getting completely different result.
> >> > >
> >> > > - routeConfiguration:
> >> > >     errorHandler:
> >> > >       deadLetterChannel:
> >> > >         deadLetterUri: direct:errorHandler
> >> > >         redeliveryPolicy:
> >> > >           maximumRedeliveries: 0
> >> > > - route:
> >> > >     from:
> >> > >       uri: timer:timer
> >> > >       steps:
> >> > >         - setBody:
> >> > >             expression:
> >> > >               constant:
> >> > >                 expression: Hello World
> >> > >         - marshal:
> >> > >             json:
> >> > >               library: jackson
> >> > >               prettyPrint: true
> >> > >         - to:
> >> > >             uri: kamelet:http-sink
> >> > >             parameters:
> >> > >               url:
> >> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> >> > > - route:
> >> > >     from:
> >> > >       uri: direct:errorHandler
> >> > >       steps:
> >> > >         - log:
> >> > >             message: Handling error
> >> > >             loggingLevel: WARN
> >> > >     description: Handle Error
> >> > >
> >> > > Now when run I'm getting the stacktrace and there's no "Handling
> >> > > error" to be found:
> >> > >
> >> > > 2023-05-19 15:20:22.084 INFO 17192 --- [ main]
> >> > > el.impl.engine.AbstractCamelContext : Apache Camel 3.20.4 (tes
> >> > > ting) started in 4s854ms (build:196ms init:3s906ms start:752ms
> >> > JVM-uptime:8s)
> >> > > 2023-05-19 15:20:23.165 ERROR 17192 --- [- timer://timer]
> >> > > or.errorhandler.DefaultErrorHandler : Failed delivery for (Mes
> >> > > sageId: B24BA7702CBB985-0000000000000000 on ExchangeId:
> >> > > B24BA7702CBB985-0000000000000000). Exhausted after delivery atte
> >> > > mpt: 1 caught: java.net.UnknownHostException: No such host is known
> >> > > (webhook.sitessss)
> >> > >
> >> > > Message History
> >> > >
> >> >
> >> ------------------------------------------------------------------------------------------------------------------------
> >> > > ---------------
> >> > > Source ID Processor
> >> > > Elapsed (ms)
> >> > > testing.camel.yaml:9 route1/route1 from[timer://timer]
> >> > > 2701025406
> >> > > testing.camel.yaml:11 route1/setBody1 setBody[constant{Hello World}]
> >> > > 2
> >> > > testing.camel.yaml:15 route1/marshal1
> >> > > marshal[org.apache.camel.model.dataformat.JsonDa
> >> > >
> >> > > A bug or do I have to configure something more to get the kamelet to
> >> > > use the route's error handler?
> >> > >
> >> > > Best regards,
> >> > > Mikael
> >> >
> >>
> >

Re: 3.20.4 Bug(?): Route's ErrorHandler not working if exception happens on Kamelet

Posted by Andrea Cosentino <an...@gmail.com>.
But it's not with kamelets it's a plain route

Il ven 2 giu 2023, 10:08 Andrea Cosentino <an...@gmail.com> ha scritto:

> There is one example in the camel-kamelets-example repo:
>
>
> https://github.com/apache/camel-kamelets-examples/tree/main/jbang/error-handler
>
> Il ven 2 giu 2023, 10:03 Pasquale Congiusti <pa...@gmail.com>
> ha scritto:
>
>> Hello,
>> Error handler should be managed differently in Kamelets. Basically the
>> problem is that a Kamelet is a RouteTemplate, so it is like a new Route
>> and
>> won't "inherit" the configuration you've defined in the original route. I
>> think you need to define your error inside the Kamelet specification
>> (which
>> it's not a very nice design). In Camel K, we've created a layer on top of
>> it inside the runtime, in order to let the user define the error handling
>> in the Binding [1].
>>
>> We had some draft work [2] to enhance that, expecting a similar global
>> mechanism in Camel. However, I haven't followed by near the recent
>> developments in Camel 4 to tell you if this is going to be included in the
>> new version or not.
>>
>> Regards,
>> Pasquale.
>>
>> [1]
>>
>> https://camel.apache.org/camel-k/1.12.x/kamelets/kameletbindings-error-handler.html
>> [2] https://github.com/apache/camel-k-runtime/pull/868
>>
>> On Fri, Jun 2, 2023 at 7:35 AM Mikael Koskinen <mi...@gmail.com>
>> wrote:
>>
>> > Hey,
>> >
>> > I wonder if anyone has any info regarding this issue? It's possible
>> > (and maybe quite likely!) that I'm using the
>> > routeConfiguration/errorHandler incorrectly.
>> >
>> > Thanks in advance.
>> >
>> > Best regards,
>> > Mikael
>> >
>> > pe 19. toukok. 2023 klo 15.24 Mikael Koskinen (mijapkos@gmail.com)
>> > kirjoitti:
>> > >
>> > > Hi,
>> > >
>> > > I'm encountering a problem where route configuration's error handler
>> > > isn't run if the exception happens on a Kamelet. Here's the gist with
>> > > tries to show the issue:
>> > >
>> >
>> https://gist.githubusercontent.com/mikoskinen/4e3e3a8efdf891890a2a46dfddae1d48/raw/09055bcdc1c2252a77a069fcebd07d6f727db555/camel-yaml-kamelet-errorhandling.yaml
>> > >
>> > > More details:
>> > >
>> > >
>> > > First, here's a (working) version with no Kamelets:
>> > >
>> > > - routeConfiguration:
>> > >     errorHandler:
>> > >       deadLetterChannel:
>> > >         deadLetterUri: direct:errorHandler
>> > >         redeliveryPolicy:
>> > >           maximumRedeliveries: 0
>> > > - route:
>> > >     from:
>> > >       uri: timer:timer
>> > >       steps:
>> > >         - setBody:
>> > >             expression:
>> > >               constant:
>> > >                 expression: Hello World
>> > >         - marshal:
>> > >             json:
>> > >               library: jackson
>> > >               prettyPrint: true
>> > >         - to:
>> > >             uri:
>> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
>> > > - route:
>> > >     from:
>> > >       uri: direct:errorHandler
>> > >       steps:
>> > >         - log:
>> > >             message: Handling error
>> > >             loggingLevel: WARN
>> > >     description: Handle Error
>> > >
>> > > When run, this is what I see in the logs:
>> > >
>> > > 2023-05-19 15:14:13.783 WARN 20268 --- [- timer://timer]
>> > > testing.camel.yaml:25 : Handling error
>> > > 2023-05-19 15:14:14.626 WARN 20268 --- [- timer://timer]
>> > > testing.camel.yaml:25 : Handling error
>> > >
>> > > It is working as I expected.
>> > >
>> > > Now, with a just one change where HTTP component is changed to Kamelet
>> > > HTTP Sink and I'm getting completely different result.
>> > >
>> > > - routeConfiguration:
>> > >     errorHandler:
>> > >       deadLetterChannel:
>> > >         deadLetterUri: direct:errorHandler
>> > >         redeliveryPolicy:
>> > >           maximumRedeliveries: 0
>> > > - route:
>> > >     from:
>> > >       uri: timer:timer
>> > >       steps:
>> > >         - setBody:
>> > >             expression:
>> > >               constant:
>> > >                 expression: Hello World
>> > >         - marshal:
>> > >             json:
>> > >               library: jackson
>> > >               prettyPrint: true
>> > >         - to:
>> > >             uri: kamelet:http-sink
>> > >             parameters:
>> > >               url:
>> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
>> > > - route:
>> > >     from:
>> > >       uri: direct:errorHandler
>> > >       steps:
>> > >         - log:
>> > >             message: Handling error
>> > >             loggingLevel: WARN
>> > >     description: Handle Error
>> > >
>> > > Now when run I'm getting the stacktrace and there's no "Handling
>> > > error" to be found:
>> > >
>> > > 2023-05-19 15:20:22.084 INFO 17192 --- [ main]
>> > > el.impl.engine.AbstractCamelContext : Apache Camel 3.20.4 (tes
>> > > ting) started in 4s854ms (build:196ms init:3s906ms start:752ms
>> > JVM-uptime:8s)
>> > > 2023-05-19 15:20:23.165 ERROR 17192 --- [- timer://timer]
>> > > or.errorhandler.DefaultErrorHandler : Failed delivery for (Mes
>> > > sageId: B24BA7702CBB985-0000000000000000 on ExchangeId:
>> > > B24BA7702CBB985-0000000000000000). Exhausted after delivery atte
>> > > mpt: 1 caught: java.net.UnknownHostException: No such host is known
>> > > (webhook.sitessss)
>> > >
>> > > Message History
>> > >
>> >
>> ------------------------------------------------------------------------------------------------------------------------
>> > > ---------------
>> > > Source ID Processor
>> > > Elapsed (ms)
>> > > testing.camel.yaml:9 route1/route1 from[timer://timer]
>> > > 2701025406
>> > > testing.camel.yaml:11 route1/setBody1 setBody[constant{Hello World}]
>> > > 2
>> > > testing.camel.yaml:15 route1/marshal1
>> > > marshal[org.apache.camel.model.dataformat.JsonDa
>> > >
>> > > A bug or do I have to configure something more to get the kamelet to
>> > > use the route's error handler?
>> > >
>> > > Best regards,
>> > > Mikael
>> >
>>
>

Re: 3.20.4 Bug(?): Route's ErrorHandler not working if exception happens on Kamelet

Posted by Andrea Cosentino <an...@gmail.com>.
There is one example in the camel-kamelets-example repo:

https://github.com/apache/camel-kamelets-examples/tree/main/jbang/error-handler

Il ven 2 giu 2023, 10:03 Pasquale Congiusti <pa...@gmail.com>
ha scritto:

> Hello,
> Error handler should be managed differently in Kamelets. Basically the
> problem is that a Kamelet is a RouteTemplate, so it is like a new Route and
> won't "inherit" the configuration you've defined in the original route. I
> think you need to define your error inside the Kamelet specification (which
> it's not a very nice design). In Camel K, we've created a layer on top of
> it inside the runtime, in order to let the user define the error handling
> in the Binding [1].
>
> We had some draft work [2] to enhance that, expecting a similar global
> mechanism in Camel. However, I haven't followed by near the recent
> developments in Camel 4 to tell you if this is going to be included in the
> new version or not.
>
> Regards,
> Pasquale.
>
> [1]
>
> https://camel.apache.org/camel-k/1.12.x/kamelets/kameletbindings-error-handler.html
> [2] https://github.com/apache/camel-k-runtime/pull/868
>
> On Fri, Jun 2, 2023 at 7:35 AM Mikael Koskinen <mi...@gmail.com> wrote:
>
> > Hey,
> >
> > I wonder if anyone has any info regarding this issue? It's possible
> > (and maybe quite likely!) that I'm using the
> > routeConfiguration/errorHandler incorrectly.
> >
> > Thanks in advance.
> >
> > Best regards,
> > Mikael
> >
> > pe 19. toukok. 2023 klo 15.24 Mikael Koskinen (mijapkos@gmail.com)
> > kirjoitti:
> > >
> > > Hi,
> > >
> > > I'm encountering a problem where route configuration's error handler
> > > isn't run if the exception happens on a Kamelet. Here's the gist with
> > > tries to show the issue:
> > >
> >
> https://gist.githubusercontent.com/mikoskinen/4e3e3a8efdf891890a2a46dfddae1d48/raw/09055bcdc1c2252a77a069fcebd07d6f727db555/camel-yaml-kamelet-errorhandling.yaml
> > >
> > > More details:
> > >
> > >
> > > First, here's a (working) version with no Kamelets:
> > >
> > > - routeConfiguration:
> > >     errorHandler:
> > >       deadLetterChannel:
> > >         deadLetterUri: direct:errorHandler
> > >         redeliveryPolicy:
> > >           maximumRedeliveries: 0
> > > - route:
> > >     from:
> > >       uri: timer:timer
> > >       steps:
> > >         - setBody:
> > >             expression:
> > >               constant:
> > >                 expression: Hello World
> > >         - marshal:
> > >             json:
> > >               library: jackson
> > >               prettyPrint: true
> > >         - to:
> > >             uri:
> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> > > - route:
> > >     from:
> > >       uri: direct:errorHandler
> > >       steps:
> > >         - log:
> > >             message: Handling error
> > >             loggingLevel: WARN
> > >     description: Handle Error
> > >
> > > When run, this is what I see in the logs:
> > >
> > > 2023-05-19 15:14:13.783 WARN 20268 --- [- timer://timer]
> > > testing.camel.yaml:25 : Handling error
> > > 2023-05-19 15:14:14.626 WARN 20268 --- [- timer://timer]
> > > testing.camel.yaml:25 : Handling error
> > >
> > > It is working as I expected.
> > >
> > > Now, with a just one change where HTTP component is changed to Kamelet
> > > HTTP Sink and I'm getting completely different result.
> > >
> > > - routeConfiguration:
> > >     errorHandler:
> > >       deadLetterChannel:
> > >         deadLetterUri: direct:errorHandler
> > >         redeliveryPolicy:
> > >           maximumRedeliveries: 0
> > > - route:
> > >     from:
> > >       uri: timer:timer
> > >       steps:
> > >         - setBody:
> > >             expression:
> > >               constant:
> > >                 expression: Hello World
> > >         - marshal:
> > >             json:
> > >               library: jackson
> > >               prettyPrint: true
> > >         - to:
> > >             uri: kamelet:http-sink
> > >             parameters:
> > >               url:
> > https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> > > - route:
> > >     from:
> > >       uri: direct:errorHandler
> > >       steps:
> > >         - log:
> > >             message: Handling error
> > >             loggingLevel: WARN
> > >     description: Handle Error
> > >
> > > Now when run I'm getting the stacktrace and there's no "Handling
> > > error" to be found:
> > >
> > > 2023-05-19 15:20:22.084 INFO 17192 --- [ main]
> > > el.impl.engine.AbstractCamelContext : Apache Camel 3.20.4 (tes
> > > ting) started in 4s854ms (build:196ms init:3s906ms start:752ms
> > JVM-uptime:8s)
> > > 2023-05-19 15:20:23.165 ERROR 17192 --- [- timer://timer]
> > > or.errorhandler.DefaultErrorHandler : Failed delivery for (Mes
> > > sageId: B24BA7702CBB985-0000000000000000 on ExchangeId:
> > > B24BA7702CBB985-0000000000000000). Exhausted after delivery atte
> > > mpt: 1 caught: java.net.UnknownHostException: No such host is known
> > > (webhook.sitessss)
> > >
> > > Message History
> > >
> >
> ------------------------------------------------------------------------------------------------------------------------
> > > ---------------
> > > Source ID Processor
> > > Elapsed (ms)
> > > testing.camel.yaml:9 route1/route1 from[timer://timer]
> > > 2701025406
> > > testing.camel.yaml:11 route1/setBody1 setBody[constant{Hello World}]
> > > 2
> > > testing.camel.yaml:15 route1/marshal1
> > > marshal[org.apache.camel.model.dataformat.JsonDa
> > >
> > > A bug or do I have to configure something more to get the kamelet to
> > > use the route's error handler?
> > >
> > > Best regards,
> > > Mikael
> >
>

Re: 3.20.4 Bug(?): Route's ErrorHandler not working if exception happens on Kamelet

Posted by Pasquale Congiusti <pa...@gmail.com>.
Hello,
Error handler should be managed differently in Kamelets. Basically the
problem is that a Kamelet is a RouteTemplate, so it is like a new Route and
won't "inherit" the configuration you've defined in the original route. I
think you need to define your error inside the Kamelet specification (which
it's not a very nice design). In Camel K, we've created a layer on top of
it inside the runtime, in order to let the user define the error handling
in the Binding [1].

We had some draft work [2] to enhance that, expecting a similar global
mechanism in Camel. However, I haven't followed by near the recent
developments in Camel 4 to tell you if this is going to be included in the
new version or not.

Regards,
Pasquale.

[1]
https://camel.apache.org/camel-k/1.12.x/kamelets/kameletbindings-error-handler.html
[2] https://github.com/apache/camel-k-runtime/pull/868

On Fri, Jun 2, 2023 at 7:35 AM Mikael Koskinen <mi...@gmail.com> wrote:

> Hey,
>
> I wonder if anyone has any info regarding this issue? It's possible
> (and maybe quite likely!) that I'm using the
> routeConfiguration/errorHandler incorrectly.
>
> Thanks in advance.
>
> Best regards,
> Mikael
>
> pe 19. toukok. 2023 klo 15.24 Mikael Koskinen (mijapkos@gmail.com)
> kirjoitti:
> >
> > Hi,
> >
> > I'm encountering a problem where route configuration's error handler
> > isn't run if the exception happens on a Kamelet. Here's the gist with
> > tries to show the issue:
> >
> https://gist.githubusercontent.com/mikoskinen/4e3e3a8efdf891890a2a46dfddae1d48/raw/09055bcdc1c2252a77a069fcebd07d6f727db555/camel-yaml-kamelet-errorhandling.yaml
> >
> > More details:
> >
> >
> > First, here's a (working) version with no Kamelets:
> >
> > - routeConfiguration:
> >     errorHandler:
> >       deadLetterChannel:
> >         deadLetterUri: direct:errorHandler
> >         redeliveryPolicy:
> >           maximumRedeliveries: 0
> > - route:
> >     from:
> >       uri: timer:timer
> >       steps:
> >         - setBody:
> >             expression:
> >               constant:
> >                 expression: Hello World
> >         - marshal:
> >             json:
> >               library: jackson
> >               prettyPrint: true
> >         - to:
> >             uri:
> https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> > - route:
> >     from:
> >       uri: direct:errorHandler
> >       steps:
> >         - log:
> >             message: Handling error
> >             loggingLevel: WARN
> >     description: Handle Error
> >
> > When run, this is what I see in the logs:
> >
> > 2023-05-19 15:14:13.783 WARN 20268 --- [- timer://timer]
> > testing.camel.yaml:25 : Handling error
> > 2023-05-19 15:14:14.626 WARN 20268 --- [- timer://timer]
> > testing.camel.yaml:25 : Handling error
> >
> > It is working as I expected.
> >
> > Now, with a just one change where HTTP component is changed to Kamelet
> > HTTP Sink and I'm getting completely different result.
> >
> > - routeConfiguration:
> >     errorHandler:
> >       deadLetterChannel:
> >         deadLetterUri: direct:errorHandler
> >         redeliveryPolicy:
> >           maximumRedeliveries: 0
> > - route:
> >     from:
> >       uri: timer:timer
> >       steps:
> >         - setBody:
> >             expression:
> >               constant:
> >                 expression: Hello World
> >         - marshal:
> >             json:
> >               library: jackson
> >               prettyPrint: true
> >         - to:
> >             uri: kamelet:http-sink
> >             parameters:
> >               url:
> https://webhook.sitessss/b7562774-4939-4e90-9337-5b9dd4d2ff1d
> > - route:
> >     from:
> >       uri: direct:errorHandler
> >       steps:
> >         - log:
> >             message: Handling error
> >             loggingLevel: WARN
> >     description: Handle Error
> >
> > Now when run I'm getting the stacktrace and there's no "Handling
> > error" to be found:
> >
> > 2023-05-19 15:20:22.084 INFO 17192 --- [ main]
> > el.impl.engine.AbstractCamelContext : Apache Camel 3.20.4 (tes
> > ting) started in 4s854ms (build:196ms init:3s906ms start:752ms
> JVM-uptime:8s)
> > 2023-05-19 15:20:23.165 ERROR 17192 --- [- timer://timer]
> > or.errorhandler.DefaultErrorHandler : Failed delivery for (Mes
> > sageId: B24BA7702CBB985-0000000000000000 on ExchangeId:
> > B24BA7702CBB985-0000000000000000). Exhausted after delivery atte
> > mpt: 1 caught: java.net.UnknownHostException: No such host is known
> > (webhook.sitessss)
> >
> > Message History
> >
> ------------------------------------------------------------------------------------------------------------------------
> > ---------------
> > Source ID Processor
> > Elapsed (ms)
> > testing.camel.yaml:9 route1/route1 from[timer://timer]
> > 2701025406
> > testing.camel.yaml:11 route1/setBody1 setBody[constant{Hello World}]
> > 2
> > testing.camel.yaml:15 route1/marshal1
> > marshal[org.apache.camel.model.dataformat.JsonDa
> >
> > A bug or do I have to configure something more to get the kamelet to
> > use the route's error handler?
> >
> > Best regards,
> > Mikael
>