apache / camel-kamelets

Apache Camel Kamelets Repository
https://camel.apache.org
Apache License 2.0
54 stars 72 forks source link

YAKS tests failing #1862

Open christophd opened 5 months ago

christophd commented 5 months ago

YAKS tests in CI jobs are failing for some time.

christophd commented 5 months ago

Tests are also failing locally. In one of the Pipes running I can see the following error:

Exception in thread "Camel (camel-1) thread #4 - timer://tick" java.lang.NoSuchMethodError: 'void com.fasterxml.jackson.core.base.GeneratorBase.<init>(int, com.fasterxml.jackson.core.ObjectCodec, com.fasterxml.jackson.core.io.IOContext)'
    at com.fasterxml.jackson.dataformat.avro.AvroGenerator.<init>(AvroGenerator.java:157)
    at com.fasterxml.jackson.dataformat.avro.AvroFactory._createGenerator(AvroFactory.java:474)
    at com.fasterxml.jackson.dataformat.avro.AvroFactory.createGenerator(AvroFactory.java:406)
    at com.fasterxml.jackson.dataformat.avro.AvroFactory.createGenerator(AvroFactory.java:394)
    at com.fasterxml.jackson.dataformat.avro.AvroFactory.createGenerator(AvroFactory.java:21)
    at com.fasterxml.jackson.databind.ObjectWriter.createGenerator(ObjectWriter.java:738)
    at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1098)
    at org.apache.camel.component.jackson.AbstractJacksonDataFormat.marshal(AbstractJacksonDataFormat.java:155)
    at org.apache.camel.support.processor.MarshalProcessor.process(MarshalProcessor.java:64)
    at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.handleFirst(RedeliveryErrorHandler.java:462)
    at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:438)
    at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199)
    at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189)
    at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166)
    at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
    at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:163)
    at org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:354)
    at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:330)
    at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:293)
    at org.apache.camel.component.timer.TimerConsumer$1.doRun(TimerConsumer.java:164)
    at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:136)
    at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
    at java.base/java.util.TimerThread.run(Timer.java:516)

@oscerd does this ring a bell?

christophd commented 5 months ago

This is the Pipe that hits the error when running with Apache Camel 4.3.0 https://github.com/apache/camel-kamelets/blob/main/tests/camel-kamelets-itest/src/test/resources/avro-deserialize-pipe.yaml

oscerd commented 5 months ago

We updated Jackson to 2.16.1 in 4.4.0 and the signature of GeneratorBase constructor has been changed, so I think we need to check what is happening at dependency tree level. It seems we have mixed versions.

oscerd commented 5 months ago

@christophd I guess is yaks jackson version: https://github.com/citrusframework/yaks/blob/main/java/pom.xml#L105

I verified that camel-jackson-avro use the correct jackson-databind version, same for webhook and the other components involved, so I think yaks-jbang is bringing in the dependency.

christophd commented 5 months ago

The Apache Camel version used in yaks-jbang is controlled by the property in https://github.com/apache/camel-kamelets/blob/main/tests/camel-kamelets-itest/src/test/resources/citrus-application.properties#L11

We need to keep this in sync with the Apache Camel version used in the Maven POM in camel-kamelets repository. Then the Pipe runtime should be using the correct Apache Camel version.