You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2022/05/10 11:09:00 UTC

[jira] [Commented] (CAMEL-18089) IllegalThreadStateException when trying to resume suspended Camel context

    [ https://issues.apache.org/jira/browse/CAMEL-18089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17534291#comment-17534291 ] 

Claus Ibsen commented on CAMEL-18089:
-------------------------------------

Can you try to reproduce this with the spring-boot example from
https://github.com/apache/camel-spring-boot-examples/tree/main/spring-boot

Then we can use that to reproduce more easily

> IllegalThreadStateException when trying to resume suspended Camel context
> -------------------------------------------------------------------------
>
>                 Key: CAMEL-18089
>                 URL: https://issues.apache.org/jira/browse/CAMEL-18089
>             Project: Camel
>          Issue Type: Bug
>    Affects Versions: 3.7.1, 3.16.0
>            Reporter: Rebecca
>            Priority: Minor
>
> Resuming a suspended camel context results in an IllegalThreadStateException. 
> When all routes and the context are started, calling camelContext.suspend(); or clicking 'Suspend' in hawtio will suspend the context and the routes, showing them as 'Suspended' in hawtio.
> Then, calling camelContext.resume(); or clicking 'Start' on the Context in hawtio, will throw an IllegalThreadStateException and afterwards the context is in state 'stopped'. There seems to be no way to restart the context other than restarting the whole application. 
> Tried this with our actual application:
>  * Java 14.0.2
>  * Camel 3.7.1
>  * Spring Boot 2.4.2
>  * Jolokia 1.6.2
>  * hawtio 2.13.3
> And also with a little test application with different dependency versions and only a simple test route, the result was the same.
>  * Java 17.0.1 (also tried with 11.0.6 and 14.0.2, same result)
>  * Camel 3.16.0
>  * Spring Boot 2.6.6
>  * Jolokia 1.7.1
>  * hawtio 2.14.5
> Stacktrace:
>  
> {code:java}
> o.a.camel.support.service.BaseService    : Error while resuming service: SpringCamelContext(CamelTestContext) with spring id applicationjava.lang.IllegalThreadStateException: null
>     at java.base/java.lang.Thread.start(Thread.java:793) ~[na:na]
>     at org.apache.camel.spring.boot.CamelMainRunController.start(CamelMainRunController.java:40) ~[camel-spring-boot-3.16.0.jar:3.16.0]
>     at org.apache.camel.spring.boot.CamelSpringBootApplicationListener$1.onCamelContextStarted(CamelSpringBootApplicationListener.java:148) ~[camel-spring-boot-3.16.0.jar:3.16.0]
>     at org.apache.camel.impl.engine.InternalRouteStartupManager.safelyStartRouteServices(InternalRouteStartupManager.java:196) ~[camel-base-engine-3.16.0.jar:3.16.0]
>     at org.apache.camel.impl.engine.InternalRouteStartupManager.doStartOrResumeRoutes(InternalRouteStartupManager.java:147) ~[camel-base-engine-3.16.0.jar:3.16.0]
>     at org.apache.camel.impl.engine.AbstractCamelContext.doResume(AbstractCamelContext.java:2585) ~[camel-base-engine-3.16.0.jar:3.16.0]
>     at org.apache.camel.support.service.BaseService.resume(BaseService.java:214) ~[camel-api-3.16.0.jar:3.16.0]
>     at org.apache.camel.management.mbean.ManagedCamelContext.start(ManagedCamelContext.java:292) ~[camel-management-3.16.0.jar:3.16.0]
>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
>     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
>     at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
>     at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:72) ~[na:na]
>     at jdk.internal.reflect.GeneratedMethodAccessor43.invoke(Unknown Source) ~[na:na]
>     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
>     at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
>     at java.base/sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:262) ~[na:na]
>     at java.management/javax.management.modelmbean.RequiredModelMBean$4.run(RequiredModelMBean.java:1178) ~[na:na]
>     at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) ~[na:na]
>     at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) ~[na:na]
>     at java.management/javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1172) ~[na:na]
>     at java.management/javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1016) ~[na:na]
>     at org.apache.camel.support.management.MixinRequiredModelMBean.invoke(MixinRequiredModelMBean.java:72) ~[camel-support-3.16.0.jar:3.16.0]
>     at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:814) ~[na:na]
>     at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802) ~[na:na]
>     at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:98) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:40) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:89) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.backend.MBeanServerExecutorLocal.handleRequest(MBeanServerExecutorLocal.java:109) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:161) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:99) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:429) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:158) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:197) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.http.HttpRequestHandler.handlePostRequest(HttpRequestHandler.java:131) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.http.AgentServlet$3.handleRequest(AgentServlet.java:493) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.http.AgentServlet.handleSecurely(AgentServlet.java:383) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.http.AgentServlet.handle(AgentServlet.java:354) ~[jolokia-core-1.7.1.jar:na]
>     at org.jolokia.http.AgentServlet.doPost(AgentServlet.java:317) ~[jolokia-core-1.7.1.jar:na]
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) ~[tomcat-embed-core-9.0.60.jar:4.0.FR]
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.60.jar:4.0.FR]
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.18.jar:5.3.18]
>     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.18.jar:5.3.18]
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.18.jar:5.3.18]
>     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.18.jar:5.3.18]
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) ~[spring-boot-actuator-2.6.6.jar:2.6.6]
>     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.18.jar:5.3.18]
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.18.jar:5.3.18]
>     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.18.jar:5.3.18]
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
>     at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na] {code}
> Dependencies:
>  
> {code:java}
> <properties>
>     <java.version>17</java.version>
>     <jolokia-core.version>1.7.1</jolokia-core.version>
>     <camel-version>3.16.0</camel-version>
> </properties>
> <dependencies>
>     <dependency>
>         <groupId>org.apache.camel.springboot</groupId>
>         <artifactId>camel-spring-boot-starter</artifactId>
>         <version>3.16.0</version>
>     </dependency>    
>     <dependency>
>         <groupId>org.springframework.boot</groupId>
>         <artifactId>spring-boot-starter-test</artifactId>
>         <scope>test</scope>
>     </dependency>    
>     <dependency>
>         <groupId>org.apache.camel.springboot</groupId>
>         <artifactId>camel-file-starter</artifactId>
>         <version>${camel-version}</version>
>     </dependency>
>     <dependency>
>         <groupId>org.apache.camel</groupId>
>         <artifactId>camel-management</artifactId>
>         <version>${camel-version}</version>
>     </dependency>
>     <dependency>
>         <groupId>org.springframework.boot</groupId>
>         <artifactId>spring-boot-starter-web</artifactId>
>     </dependency>
>     <dependency>
>         <groupId>org.springframework.boot</groupId>
>         <artifactId>spring-boot-starter-actuator</artifactId>
>     </dependency>
>     <dependency>
>         <groupId>org.jolokia</groupId>
>         <artifactId>jolokia-core</artifactId>
>         <version>${jolokia-core.version}</version>
>     </dependency>
> </dependencies> {code}
> The test route:
>  
> {code:java}
> public class MyRouteBuilder extends RouteBuilder {    
>     @Override
>     public void configure() throws Exception {
>         from("file:src/data?noop=true")
>                 .routeId("ROUTE1")
>                 .log(LoggingLevel.INFO, "ROUTE1 entered")
>                 .to("file://target/test");
>     }
> } {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)