camel-k icon indicating copy to clipboard operation
camel-k copied to clipboard

Route diagram not visible in hawtio console: JMX connector not running

Open hdwivedi-ra opened this issue 2 years ago • 35 comments

What happened?

Hi, I am using kamel version 2.1 and want to enable hawtio monitoring with jolokia traits. There is an exception when viewing the route diagram.

jakarta.xml.bind.JAXBException: Error while searching for service [jakarta.xml.bind.JAXBContextFactory]

with linked exception:

[java.util.ServiceConfigurationError: jakarta.xml.bind.JAXBContextFactory: org.glassfish.jaxb.runtime.v2.JAXBContextFactory not a subtype]
at jakarta.xml.bind.ContextFinder$1.createException(ContextFinder.java:85)
at jakarta.xml.bind.ContextFinder$1.createException(ContextFinder.java:82)
at jakarta.xml.bind.ServiceLoaderUtil.firstByServiceLoader(ServiceLoaderUtil.java:46)
at jakarta.xml.bind.ContextFinder.find(ContextFinder.java:319)
at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:392)
at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:349)
at org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory.newJAXBContext(DefaultModelJAXBContextFactory.java:39)
at org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory.newJAXBContext(DefaultModelJAXBContextFactory.java:29)
at org.apache.camel.xml.jaxb.JaxbHelper.getJAXBContext(JaxbHelper.java:75)
at org.apache.camel.xml.jaxb.JaxbModelToXMLDumper.dumpModelAsXml(JaxbModelToXMLDumper.java:73)
at org.apache.camel.xml.jaxb.JaxbModelToXMLDumper.dumpModelAsXml(JaxbModelToXMLDumper.java:157)
at org.apache.camel.management.mbean.ManagedRoute.dumpRouteAsXml(ManagedRoute.java:394)
at org.apache.camel.management.mbean.ManagedRoute.dumpRouteAsXml(ManagedRoute.java:386)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:72)
at jdk.internal.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:262)
at [java.management/javax.management.modelmbean.RequiredModelMBean$4.run(RequiredModelMBean.java:1178)](http://java.management/javax.management.modelmbean.RequiredModelMBean$4.run(RequiredModelMBean.java:1178))
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at [java.management/javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1172)](http://java.management/javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1172))
at [java.management/javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1016)](http://java.management/javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1016))
at org.apache.camel.support.management.MixinRequiredModelMBean.invoke(MixinRequiredModelMBean.java:72)
at [java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:814)](http://java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:814))
at [java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802)](http://java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802))
at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:98)
at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:40)
at org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:89)
at org.jolokia.backend.MBeanServerExecutorLocal.handleRequest(MBeanServerExecutorLocal.java:109)
at org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:161)
at org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:99)
at org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:429)
at org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:158)
at org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:197)
at org.jolokia.http.HttpRequestHandler.handlePostRequest(HttpRequestHandler.java:137)
at org.jolokia.jvmagent.handler.JolokiaHttpHandler.executePostRequest(JolokiaHttpHandler.java:292)
at org.jolokia.jvmagent.handler.JolokiaHttpHandler.doHandle(JolokiaHttpHandler.java:238)
at org.jolokia.jvmagent.handler.JolokiaHttpHandler.handle(JolokiaHttpHandler.java:180)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:95)
at jdk.httpserver/sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:82)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:98)
at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:851)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:95)
at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:816)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.util.ServiceConfigurationError: jakarta.xml.bind.JAXBContextFactory: org.glassfish.jaxb.runtime.v2.JAXBContextFactory not a subtype
at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:593)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1244)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)
at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
at jakarta.xml.bind.ServiceLoaderUtil.firstByServiceLoader(ServiceLoaderUtil.java:39)
... 49 more

It looks that camel-k integration is not able to run JMX connector

Steps to reproduce

  1. Setup hawtio console [https://github.com/hawtio/hawtio-online]
  2. enable the jolokia trait in any camel-k integration
  3. Route diagram is not rendered

Relevant log output

No response

Camel K version

v2.1.0

hdwivedi-ra avatar Dec 18 '23 09:12 hdwivedi-ra

I've managed to run an Integration enabling jolokia and it seems on Kubernetes side it is running as expected (java -javaagent:dependencies/lib/main/org.jolokia.jolokia-jvm-1.7.2.jar=discoveryEnabled=false,host=*,port=8778). If I understand correctly, the error you're getting is on Hawtio console side, is it? By default, Camel K is using Camel 4 runtime (based on Camel Quarkus 3). I wonder if you're using a version compatible as it seems the error is complaining about jakarta annotations (which have changed in Camel 4).

squakez avatar Dec 18 '23 09:12 squakez

The route diagram is correctly visible if I run camel route in Quarkus application using the same versions. The issue is JMX service is not started in the camel-k integration. It looks some configuration error. I got the following debug logs in camel-k integration

[1] 2023-12-18 09:40:41,132 FINE  [jak.xml.bind] (jolokia-0) Resolved classes from context path: [class org.apache.camel.BeanScope, class org.apache.camel.model.AggregateDefinition, class org.apache.camel.model.app.ApplicationDefinition, class org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration, class org.apache.camel.model.config.BatchResequencerConfig, class org.apache.camel.model.dataformat.ASN1DataFormat, class org.apache.camel.model.errorhandler.DeadLetterChannelDefinition, class org.apache.camel.model.language.CSimpleExpression, class org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition, class org.apache.camel.model.rest.ApiKeyDefinition, class org.apache.camel.model.transformer.CustomTransformerDefinition, class org.apache.camel.model.validator.CustomValidatorDefinition]
**[1] 2023-12-18 09:40:41,132 FINE  [jak.xml.bind] (jolokia-0) Checking system property jakarta.xml.bind.JAXBContextFactory
[1] 2023-12-18 09:40:41,132 FINE  [jak.xml.bind] (jolokia-0)   not found**

hdwivedi-ra avatar Dec 18 '23 09:12 hdwivedi-ra

Hi @hdwivedi-ra,

For some Hawtio's Camel features to work with Quarkus, you'd need to add org.apache.camel.quarkus:camel-quarkus-jaxb to the dependencies, because it's required for Camel XML DSL. Maybe you can try running your integration with -d camel:jaxb if it's not present yet.

tadayosi avatar Dec 18 '23 09:12 tadayosi

camel:jaxb is already added

[1] 2023-12-18 09:47:58,616 INFO [io.quarkus] (main) Installed features: [camel-bean, camel-core, camel-java-joor-dsl, camel-jaxb, camel-k-core, camel-k-runtime, camel-kubernetes, camel-management, camel-timer, camel-xml-jaxb, cdi, kubernetes-client, smallrye-context-propagation, vertx]

hdwivedi-ra avatar Dec 18 '23 09:12 hdwivedi-ra

Just to be sure, are you not using native build for the Camel K integration?

tadayosi avatar Dec 18 '23 10:12 tadayosi

@hdwivedi-ra If you're not, it might be related to the content of the integration you're running. Sharing the integration code that reproduces the issue could help.

tadayosi avatar Dec 19 '23 07:12 tadayosi

@tadayosi Belo is the sample route which I am running

import org.apache.camel.builder.RouteBuilder;

public class hello extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("timer:java?period={{time:60000}}")
            .setBody()
                .simple("Hello Camel from ${routeId}")
            .log("${body}");
    }
}

I am running below command kamel run hello.java --name hawtio-online-example-camel-k --dev -t jolokia.protocol=https -t jolokia.host=* -t jolokia.port=8778 -t jolokia.use-ssl-client-authentication=false -t jolokia.enabled=true -t logging.level=DEBUG

hdwivedi-ra avatar Dec 19 '23 07:12 hdwivedi-ra

@tadayosi The behavior is same with the native build also

kamel run hello.java --name hawtio-online-example-camel-k --dev -t jolokia.protocol=https -t jolokia.host= -t jolokia.port=8778 -t jolokia.use-ssl-client-authentication=false -t jolokia.enabled=true -t logging.level=DEBUG -t quarkus.enabled=true -t quarkus.package-type=native*

hdwivedi-ra avatar Dec 19 '23 07:12 hdwivedi-ra

@hdwivedi-ra OK, thanks. It looks like I can reproduce the issue at hand. I'll look into it further and get back to you.

tadayosi avatar Dec 20 '23 09:12 tadayosi

Hi Camel K team @squakez,

It's really not an issue specific to Hawtio, but you can reproduce it only with Camel K.

For instance, you can use this example https://github.com/hawtio/hawtio-online-examples/blob/main/camel-k/hello.java and run it to a cluster:

kamel run camel-k/hello.java -t jolokia.enabled=true -t jolokia.use-ssl-client-authentication=false

(Here -t jolokia.use-ssl-client-authentication=false is added just for the ease of reproducing the issue, but it's really not essential.)

Then do the following kubectl exec on the running integration pod:

kubectl exec hello-xxxxx -- curl -k https://localhost:8778/jolokia/exec/org.apache.camel:context=camel-1,name=%22route1%22,type=routes/dumpRouteAsXml\(\) | jq

You'll get the same error:

{
  "request": {
    "mbean": "org.apache.camel:context=camel-1,name=\"route1\",type=routes",
    "type": "exec",
    "operation": "dumpRouteAsXml()"
  },
  "stacktrace": "jakarta.xml.bind.JAXBException: Error while searching for service [jakarta.xml.bind.JAXBContextFactory]\n - with linked exception:\n[java.util.ServiceConfigurationError: jakarta.xml.bind.JAXBContextFactory: org.glassfish.jaxb.runtime.v2.JAXBContextFactory not a subtype]\n\tat jakarta.xml.bind.ContextFinder$1.createException(ContextFinder.java:85)\n\tat jakarta.xml.bind.ContextFinder$1.createException(ContextFinder.java:82)\n\tat jakarta.xml.bind.ServiceLoaderUtil.firstByServiceLoader(ServiceLoaderUtil.java:46)\n\tat jakarta.xml.bind.ContextFinder.find(ContextFinder.java:319)\n\tat jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:392)\n\tat jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:349)\n\tat org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory.newJAXBContext(DefaultModelJAXBContextFactory.java:39)\n\tat org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory.newJAXBContext(DefaultModelJAXBContextFactory.java:29)\n\tat org.apache.camel.xml.jaxb.JaxbHelper.getJAXBContext(JaxbHelper.java:75)\n\tat org.apache.camel.xml.jaxb.JaxbModelToXMLDumper.dumpModelAsXml(JaxbModelToXMLDumper.java:73)\n\tat org.apache.camel.xml.jaxb.JaxbModelToXMLDumper.dumpModelAsXml(JaxbModelToXMLDumper.java:157)\n\tat org.apache.camel.management.mbean.ManagedRoute.dumpRouteAsXml(ManagedRoute.java:394)\n\tat org.apache.camel.management.mbean.ManagedRoute.dumpRouteAsXml(ManagedRoute.java:386)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:568)\n\tat sun.reflect.misc.Trampoline.invoke(MethodUtil.java:72)\n\tat jdk.internal.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:568)\n\tat java.base/sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:262)\n\tat java.management/javax.management.modelmbean.RequiredModelMBean$4.run(RequiredModelMBean.java:1178)\n\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:399)\n\tat java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)\n\tat java.management/javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1172)\n\tat java.management/javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1016)\n\tat org.apache.camel.support.management.MixinRequiredModelMBean.invoke(MixinRequiredModelMBean.java:72)\n\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:814)\n\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802)\n\tat org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:98)\n\tat org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:40)\n\tat org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:89)\n\tat org.jolokia.backend.MBeanServerExecutorLocal.handleRequest(MBeanServerExecutorLocal.java:109)\n\tat org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:161)\n\tat org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:99)\n\tat org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:429)\n\tat org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:158)\n\tat org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:197)\n\tat org.jolokia.http.HttpRequestHandler.handleGetRequest(HttpRequestHandler.java:86)\n\tat org.jolokia.jvmagent.handler.JolokiaHttpHandler.executeGetRequest(JolokiaHttpHandler.java:278)\n\tat org.jolokia.jvmagent.handler.JolokiaHttpHandler.doHandle(JolokiaHttpHandler.java:235)\n\tat org.jolokia.jvmagent.handler.JolokiaHttpHandler.handle(JolokiaHttpHandler.java:180)\n\tat jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:95)\n\tat jdk.httpserver/sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:82)\n\tat jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:98)\n\tat jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:851)\n\tat jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:95)\n\tat jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:816)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\n\tat java.base/java.lang.Thread.run(Thread.java:840)\nCaused by: java.util.ServiceConfigurationError: jakarta.xml.bind.JAXBContextFactory: org.glassfish.jaxb.runtime.v2.JAXBContextFactory not a subtype\n\tat java.base/java.util.ServiceLoader.fail(ServiceLoader.java:593)\n\tat java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1244)\n\tat java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)\n\tat java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)\n\tat java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)\n\tat jakarta.xml.bind.ServiceLoaderUtil.firstByServiceLoader(ServiceLoaderUtil.java:39)\n\t... 49 more\n",
  "error_type": "jakarta.xml.bind.JAXBException",
  "error": "jakarta.xml.bind.JAXBException : Error while searching for service [jakarta.xml.bind.JAXBContextFactory]",
  "status": 500
}

So, as you can see, the root issue is that the MBean operation dumpRouteAsXml() doesn't somehow work on a cluster while it does locally. It must be related to be the way the container image is built with Camel K.

Could anyone of you look at the issue from Camel K side?

tadayosi avatar Dec 21 '23 08:12 tadayosi

Thanks @tadayosi for such detailed reproducer. We can have a look and see what could be the root cause. However, it seems something related to the runtime. Is this something reproducible also in a Camel Quarkus regular application? my gut feeling is that the Quarkus optimization is cutting something that would be required at runtime when running via jmx.

squakez avatar Dec 21 '23 08:12 squakez

I re-read some of the comments above and it seems the reporter manages to run it properly in Camel Quarkus regular app. We'll have a look asap.

squakez avatar Dec 21 '23 08:12 squakez

@squakez Good point. We have another example which is a pure Camel Quarkus application: https://github.com/hawtio/hawtio-online-examples/tree/main/camel-quarkus When you follow the README and run the example locally:

java -javaagent:target/quarkus-app/lib/main/org.jolokia.jolokia-agent-jvm-2.0.0-M4-agent.jar -jar target/quarkus-app/quarkus-run.jar

the Route Diagram view works just fine, meaning dumpRouteAsXml() operation works fine too.

If you look at the dependencies part of its pom.xml, there's no special dependencies to make it work. Maybe you can compare it with those of Camel K app to see any differences, but I'd rather suspect it's caused by the difference of the choice of base Java image or JDK.

tadayosi avatar Dec 21 '23 09:12 tadayosi

the issue is the fact that camel-k operator does not add any xml related dependency if not needed by the routes whereas the example by @tadayosi does https://github.com/hawtio/hawtio-online-examples/blob/main/camel-quarkus/pom.xml#L110-L116

we may need to automatically add the xml deps in case that the jolokia trait is enabled

lburgazzoli avatar Dec 21 '23 09:12 lburgazzoli

the issue is the fact that camel-k operator does not add any xml related dependency if not needed by the routes whereas the example by @tadayosi does https://github.com/hawtio/hawtio-online-examples/blob/main/camel-quarkus/pom.xml#L110-L116

we may need to automatically add the xml deps in case that the jolokia trait is enabled

We can simply try adding the dependency in the test then. If it works we can include such a dependency in the jolokia trait.

squakez avatar Dec 21 '23 09:12 squakez

That does not seems to be the problem. There was a minor change required in the runtime catalog as the JAXB dependency was still pointing to Camel and not to Quarkus (I think it was not available in Camel Quarkus 2.x). I've fixed that. However, even with that changed or forcefully trying to add the dependency, the error I got is the same.

squakez avatar Dec 21 '23 09:12 squakez

maybe there are some spurious dependencies making thing failing, has the new kit be created from scratch ?

lburgazzoli avatar Dec 21 '23 10:12 lburgazzoli

maybe there are some spurious dependencies making thing failing, has the new kit be created from scratch ?

Yes. What I am looking now is the jolokia version. As we are using 1.7.2 whilst in the working examples it already uses 2.0.0-Mx.

squakez avatar Dec 21 '23 10:12 squakez

yeah, that may be an issue since the move from javax to jakarta maybe

lburgazzoli avatar Dec 21 '23 10:12 lburgazzoli

I tried the Camel Quarkus examples with jolokia 1.7.2 and it seems it works correctly. I've also used the same set of dependencies for Camel 4. I wonder if this may be some classpath problem caused by the Camel K Runtime layer. Looking at the comment here [1] I wonder if that is a possibility.

[1] https://github.com/apache/camel-k/issues/4990#issuecomment-1859942196

squakez avatar Dec 21 '23 11:12 squakez

It worked with camel-k-runtime 3.2.3 by using the camel trait -t camel.runtime-version=3.2.3 Camel K 2.2 (main branch, unreleased) also works, so the original errors seems to be some transitive dependency, which I haven't looked at.

claudio4j avatar Dec 26 '23 12:12 claudio4j

Thanks @claudio4j for looking at it. If it is solved with the new released runtime, I guess we can close this issue. @hdwivedi-ra cold you please check on your side and confirm if that works for you as well?

squakez avatar Jan 02 '24 08:01 squakez

@squakez I have kamel v2.1 how can I install camel-k runtime version 3.2.3? I want to install it in a new K8s namespace.

hdwivedi-ra avatar Jan 02 '24 08:01 hdwivedi-ra

@squakez I have kamel v2.1 how can I install camel-k runtime version 3.2.3? I want to install it in a new K8s namespace.

You need to specify the Camel runtime property trait: https://camel.apache.org/camel-k/2.1.x/running/runtime-version.html - you can specify this in each Integration or configure the IntegrationPlatform to inherit in all your Integrations. If you run via kamel CLI, then, you can use the option -t camel.runtime-version=3.2.3. Otherwise you need to specify in the Integration trait list.

squakez avatar Jan 02 '24 08:01 squakez

@claudio4j ./kamel run hello.java -t jolokia.protocol=https -t jolokia.host=* -t jolokia.port=8778 -t jolokia.use-ssl-client-authentication=false -t jolokia.enabled=true --name hello -t camel.runtime-version=3.2.3

When using -t camel.runtime-version=3.2.3 I get the response Integration "hello" created. However no pod is created and nothing is displayed in hawtio console.

I just want to confirm if there is not need to update the camel-k environment to use the trait -t camel.runtime-version=3.2.3

hdwivedi-ra avatar Jan 02 '24 09:01 hdwivedi-ra

It sounds weird. The Integration and related Deployment/Pod should be created and the runtime used should be the new one you specified. Mind that it would probably run a new build to get all the set of dependencies. What is the status of the new Integration?

squakez avatar Jan 02 '24 09:01 squakez

It is showing error in logs Capture

hdwivedi-ra avatar Jan 02 '24 09:01 hdwivedi-ra

Okey, thanks. Could you please run the following kubectl get it hello -o yaml? so we can check why the integration is on error. In general, you can have a look at the troubleshooting guide when there is any Integration failure.

squakez avatar Jan 02 '24 09:01 squakez

It is showing error in logs

You can also look at the camel-k-operator logs: kubectl logs -f $(kubectl get pod -l app=camel-k -oname)

claudio4j avatar Jan 02 '24 10:01 claudio4j

Okey, thanks. Could you please run the following kubectl get it hello -o yaml? so we can check why the integration is on error. In general, you can have a look at the troubleshooting guide when there is any Integration failure.

apiVersion: camel.apache.org/v1 kind: Integration metadata: annotations: camel.apache.org/operator.id: camel-k creationTimestamp: "2024-01-02T09:12:19Z" generation: 2 name: hello namespace: default resourceVersion: "297350067" uid: 066a907f-e4bb-4614-9368-efb006258fea spec: sources:

  • content: "// camel-k: language=java\r\n\r\nimport org.apache.camel.builder.RouteBuilder;\r\n\r\npublic class hello extends RouteBuilder {\r\n\r\n @Override\r\n public void configure() throws Exception {\r\n from("timer:java?period={{time:60000}}")\r\n \ .setBody()\r\n .simple("Hello Camel from ${routeId}")\r\n \ .log("${body}");\r\n }\r\n}\r\n" name: hello.java traits: camel: runtimeVersion: 3.2.3 jolokia: enabled: true host: '*' port: 8778 protocol: https useSSLClientAuthentication: false logging: level: DEBUG status: conditions:
  • lastTransitionTime: "2024-01-02T09:29:36Z" lastUpdateTime: "2024-01-02T09:29:36Z" message: 'error during trait customization: camel trait execution failed: : signal: killed' reason: InitializationFailed status: "False" type: Ready digest: v3GdJrE_fTCMOkSm4skzG9Zv-FR2BpdPASV7K7igW0B8 observedGeneration: 2 phase: Error

hdwivedi-ra avatar Jan 02 '24 13:01 hdwivedi-ra