Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basic groovy example generates "Ambiguous method overloading for method org.apache.camel.model.RouteDefinition#process" #1143

Closed
jcordes73 opened this issue Dec 13, 2019 · 3 comments

Comments

@jcordes73
Copy link

When using Camel K Client 1.0.0-M4 the Groovy example (from https://camel.apache.org/camel-k/latest/languages/groovy.html)

from('timer:tick')
.process { it.in.body = 'Hello Camel K!' }
.to('log:info')

leads to the following error in the pod:

Starting the Java application using /opt/run-java/run-java.sh ...
exec java -XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfMemoryError -cp ./resources:/etc/camel/conf:/etc/camel/resources:/etc/camel/sources/i-source-000:dependencies/com.sun.xml.bind.jaxb-core-2.3.0.1.jar:dependencies/com.sun.xml.bind.jaxb-impl-2.3.0.jar:dependencies/commons-io.commons-io-2.6.jar:dependencies/javax.xml.bind.jaxb-api-2.3.0.jar:dependencies/org.apache.camel.camel-api-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-base-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-core-engine-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-endpointdsl-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-groovy-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-jaxp-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-log-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-main-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-management-api-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-support-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-timer-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-util-3.0.0-RC3.jar:dependencies/org.apache.camel.camel-util-json-3.0.0-RC3.jar:dependencies/org.apache.camel.k.camel-k-loader-groovy-1.0.7.jar:dependencies/org.apache.camel.k.camel-k-runtime-core-1.0.7.jar:dependencies/org.apache.camel.k.camel-k-runtime-main-1.0.7.jar:dependencies/org.apache.camel.spi-annotations-3.0.0-RC3.jar:dependencies/org.apache.commons.commons-lang3-3.9.jar:dependencies/org.apache.logging.log4j.log4j-api-2.12.1.jar:dependencies/org.apache.logging.log4j.log4j-core-2.12.1.jar:dependencies/org.apache.logging.log4j.log4j-slf4j-impl-2.12.1.jar:dependencies/org.codehaus.groovy.groovy-2.5.8.jar:dependencies/org.slf4j.slf4j-api-1.7.28.jar org.apache.camel.k.main.Application
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
2019-12-13 21:21:57.103 �[32mINFO �[m [main] ApplicationRuntime - Add listener: org.apache.camel.k.listener.ContextConfigurer@4e91d63f
2019-12-13 21:21:57.107 �[32mINFO �[m [main] ApplicationRuntime - Add listener: org.apache.camel.k.listener.RoutesConfigurer@5e316c74
2019-12-13 21:21:57.107 �[32mINFO �[m [main] ApplicationRuntime - Add listener: org.apache.camel.k.listener.RoutesDumper@161479c6
2019-12-13 21:21:57.121 �[32mINFO �[m [main] RuntimeSupport - Looking up loader for language: groovy
2019-12-13 21:21:57.333 �[32mINFO �[m [main] RuntimeSupport - Found loader org.apache.camel.k.loader.groovy.GroovyRoutesLoader@37313c65 for language groovy from service definition
2019-12-13 21:21:57.603 �[32mINFO �[m [main] RoutesConfigurer - Loading routes from: file:/etc/camel/sources/i-source-000/integration.groovy?language=groovy
2019-12-13 21:21:57.603 �[32mINFO �[m [main] ApplicationRuntime - Listener org.apache.camel.k.listener.RoutesConfigurer@5e316c74 executed in phase ConfigureRoutes
2019-12-13 21:21:57.613 �[32mINFO �[m [main] BaseMainSupport - Using properties from: file:/etc/camel/conf/application.properties
Exception in thread "main" groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method org.apache.camel.model.RouteDefinition#process.
Cannot resolve which method to invoke for [class Script1$_run_closure1] due to overlapping prototypes between:
[interface java.util.function.Supplier]
[interface org.apache.camel.Processor]
at groovy.lang.MetaClassImpl.doChooseMostSpecificParams(MetaClassImpl.java:3279)
at groovy.lang.MetaClassImpl.chooseMostSpecificParams(MetaClassImpl.java:3256)
at groovy.lang.MetaClassImpl.chooseMethodInternal(MetaClassImpl.java:3245)
at groovy.lang.MetaClassImpl.chooseMethod(MetaClassImpl.java:3188)
at groovy.lang.MetaClassImpl.getMethodWithCachingInternal(MetaClassImpl.java:1355)
at groovy.lang.MetaClassImpl.createPojoCallSite(MetaClassImpl.java:3434)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:131)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:165)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
at Script1.run(Script1.groovy:1)
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:234)
at org.apache.camel.k.loader.groovy.GroovyRoutesLoader$1$_configure_closure1.doCall(GroovyRoutesLoader.groovy:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
at groovy.lang.Closure.call(Closure.java:405)
at groovy.lang.Closure.call(Closure.java:421)
at org.codehaus.groovy.runtime.IOGroovyMethods.withCloseable(IOGroovyMethods.java:1608)
at org.codehaus.groovy.runtime.dgm$913.doMethodInvoke(Unknown Source)
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:234)
at org.apache.camel.k.loader.groovy.GroovyRoutesLoader$1.configure(GroovyRoutesLoader.groovy:51)
at org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:471)
at org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:438)
at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:418)
at org.apache.camel.impl.engine.AbstractCamelContext.lambda$addRoutes$0(AbstractCamelContext.java:1114)
at org.apache.camel.impl.engine.AbstractCamelContext.doWithDefinedClassLoader(AbstractCamelContext.java:2455)
at org.apache.camel.impl.engine.AbstractCamelContext.addRoutes(AbstractCamelContext.java:1114)
at org.apache.camel.main.RoutesConfigurer.configureRoutes(RoutesConfigurer.java:84)
at org.apache.camel.main.BaseMainSupport.postProcessCamelContext(BaseMainSupport.java:549)
at org.apache.camel.main.BaseMainSupport.initCamelContext(BaseMainSupport.java:402)
at org.apache.camel.k.main.ApplicationRuntime$MainAdapter.doInit(ApplicationRuntime.java:168)
at org.apache.camel.support.service.ServiceSupport.init(ServiceSupport.java:62)
at org.apache.camel.support.service.ServiceSupport.start(ServiceSupport.java:90)
at org.apache.camel.main.MainSupport.run(MainSupport.java:77)
at org.apache.camel.k.main.ApplicationRuntime.run(ApplicationRuntime.java:70)
at org.apache.camel.k.main.Application.main(Application.java:42)

@nicolaferraro
Copy link
Member

Thanks @jcordes73 for opening these issues, these examples used to work but there has been some breaking change in Camel that cause them to fail.

I've opened https://issues.apache.org/jira/browse/CAMEL-14300 to fix it in one of next Camel version. In the meantime we should find some workaround for this and #1144.

cc: @lburgazzoli

@lburgazzoli
Copy link
Contributor

Till we get it fixed, you can workaround it by coercing the closure to the type

.process { it.in.body = 'Hello Camel K!' } as Processor

@lburgazzoli
Copy link
Contributor

fixed now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants