[
https://issues.apache.org/jira/browse/CAMEL-18089?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen reassigned CAMEL-18089:
-----------------------------------
Assignee: Claus Ibsen
> camel-spring-boot - 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
> Components: camel-spring-boot
> Affects Versions: 3.7.1, 3.16.0
> Reporter: Rebecca
> Assignee: Claus Ibsen
> 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)