Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-17048

KameletBinding error handler regression

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not a Bug
    • Icon: Blocker Blocker
    • Camel-K-GA
    • Camel-K-GA
    • Camel-K
    • None
    • False
    • False
    • % %
    • Todo
    • Undefined
    • Hide

      Just try any KameletBinding with an error handler

      Show
      Just try any KameletBinding with an error handler

      While working on something different, I've spotted some regression happening on Camel K GA. The first one is described upstream: https://github.com/apache/camel-k/issues/2524

      It is easy to solve and a patch is going to be provided soon after merging upstream. However, I've tested the patch on the product repo and I spotted a more critical issue. The KameletBinding Error Handler is broken with the following runtime error message:

      [1] 2021-07-23 09:38:23,321 ERROR [org.apa.cam.qua.mai.CamelMainRuntime] (main) Failed to start application: org.snakeyaml.engine.v2.exceptions.YamlEngineException: org.apache.camel.dsl.yaml.common.exception.UnsupportedNodeTypeException: Unsupported type (MAPPING) for node: <org.snakeyaml.engine.v2.nodes.MappingNode (tag=tag:yaml.org,2002:map, values={ key=<org.snakeyaml.engine.v2.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=from)>; value=917568725 }{ key=<org.snakeyaml.engine.v2.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=id)>; value=<NodeTuple keyNode=<org.snakeyaml.engine.v2.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=id)>; valueNode=<org.snakeyaml.engine.v2.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=error-handler)>> })>
      [1] 	at org.snakeyaml.engine.v2.constructor.BaseConstructor.construct(BaseConstructor.java:93)
      [1] 	at org.snakeyaml.engine.v2.constructor.BaseConstructor.constructSingleDocument(BaseConstructor.java:74)
      [1] 	at org.snakeyaml.engine.v2.api.Load.loadOne(Load.java:84)
      [1] 	at org.snakeyaml.engine.v2.api.Load.loadFromInputStream(Load.java:96)
      [1] 	at org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader$1.configure(YamlRoutesBuilderLoader.java:113)
      [1] 	at org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:540)
      [1] 	at org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:487)
      [1] 	at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:462)
      [1] 	at org.apache.camel.impl.engine.AbstractCamelContext.addRoutes(AbstractCamelContext.java:1161)
      [1] 	at org.apache.camel.main.RoutesConfigurer.configureRoutes(RoutesConfigurer.java:200)
      [1] 	at org.apache.camel.quarkus.main.CamelMain.configureRoutes(CamelMain.java:70)
      [1] 	at org.apache.camel.main.BaseMainSupport.postProcessCamelContext(BaseMainSupport.java:546)
      [1] 	at org.apache.camel.quarkus.main.CamelMain.initCamelContext(CamelMain.java:116)
      [1] 	at org.apache.camel.quarkus.main.CamelMain.doInit(CamelMain.java:86)
      [1] 	at org.apache.camel.support.service.BaseService.init(BaseService.java:83)
      [1] 	at org.apache.camel.quarkus.main.CamelMain.startEngine(CamelMain.java:137)
      [1] 	at org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:49)
      [1] 	at org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:45)
      [1] 	at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy_0(CamelBootstrapProcessor$boot-173480958.zig:101)
      [1] 	at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy(CamelBootstrapProcessor$boot-173480958.zig:40)
      [1] 	at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:534)
      [1] 	at io.quarkus.runtime.Application.start(Application.java:90)
      [1] 	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:100)
      [1] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:66)
      [1] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:42)
      [1] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:119)
      [1] 	at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29)
      [1] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      [1] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      [1] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      [1] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      [1] 	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:48)
      [1] 	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:25)
      [1] Caused by: org.apache.camel.dsl.yaml.common.exception.UnsupportedNodeTypeException: Unsupported type (MAPPING) for node: <org.snakeyaml.engine.v2.nodes.MappingNode (tag=tag:yaml.org,2002:map, values={ key=<org.snakeyaml.engine.v2.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=from)>; value=917568725 }{ key=<org.snakeyaml.engine.v2.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=id)>; value=<NodeTuple keyNode=<org.snakeyaml.engine.v2.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=id)>; valueNode=<org.snakeyaml.engine.v2.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=error-handler)>> })>
      [1] 	at org.apache.camel.dsl.yaml.common.YamlSupport.creteEndpointUri(YamlSupport.java:278)
      [1] 	at org.apache.camel.dsl.yaml.common.YamlSupport.creteEndpoint(YamlSupport.java:290)
      [1] 	at org.apache.camel.dsl.yaml.deserializers.EndpointProducerDeserializersResolver.lambda$resolve$0(EndpointProducerDeserializersResolver.java:344)
      [1] 	at org.apache.camel.dsl.yaml.common.YamlDeserializationContext$2.construct(YamlDeserializationContext.java:194)
      [1] 	at org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:140)
      [1] 	at org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObject(BaseConstructor.java:128)
      [1] 	at org.snakeyaml.engine.v2.constructor.BaseConstructor.constructSequenceStep2(BaseConstructor.java:206)
      [1] 	at org.snakeyaml.engine.v2.constructor.BaseConstructor.constructSequence(BaseConstructor.java:199)
      [1] 	at org.snakeyaml.engine.v2.constructor.StandardConstructor$ConstructYamlSeq.construct(StandardConstructor.java:340)
      [1] 	at org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:140)
      [1] 	at org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObject(BaseConstructor.java:128)
      [1] 	at org.snakeyaml.engine.v2.constructor.BaseConstructor.construct(BaseConstructor.java:87)
      [1] 	... 32 more
      

      The first assessment point that it was a regression introduced in this commit: https://github.com/jboss-fuse/camel-k/commit/9a0caedeb8430ff436852bcc4b8498a7202da596

      Apparently the usage of template instead of flow scrambled the validity of the error handler.

            pcongius Pasquale Congiusti
            pcongius Pasquale Congiusti
            Jan Bouska Jan Bouska
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: