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

KameletBinding error handler regression

    XMLWordPrintable

Details

    • Bug
    • Resolution: Not a Bug
    • 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

    Description

      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.

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: