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

Felix Meschberger commented on FELIX-4423:
------------------------------------------

Hmm this might be caused by the JettyService.stop() method scheduling the 
server shutdown but not waiting until the Executor service has actually 
executed all scheduled tasks.

Maybe the stop() method should call the awaitTermination() method after 
shutting down the executor to make sure the server has been stopped.

> ClassNotFoundException when stopping Jetty bundle
> -------------------------------------------------
>
>                 Key: FELIX-4423
>                 URL: https://issues.apache.org/jira/browse/FELIX-4423
>             Project: Felix
>          Issue Type: Bug
>          Components: HTTP Service
>    Affects Versions: http-2.2.2
>            Reporter: J.W. Janssen
>            Assignee: J.W. Janssen
>             Fix For: http-2.3.0
>
>
> I sometimes see a class-not-found exception when stopping the OSGi framework 
> with a running Jetty bundle. It seems that due to the asynchronous nature of 
> this bundle, subtle timing issues can occur during shutdown:
> {code}
> 2014-02-07 17:21:23.312:WARN:oejuc.AbstractLifeCycle:FAILED 
> qtp1827750836{8<=8<=8/254,0}: java.lang.NoClassDefFoundError: 
> org/eclipse/jetty/util/thread/QueuedThreadPool$1
> java.lang.NoClassDefFoundError: 
> org/eclipse/jetty/util/thread/QueuedThreadPool$1
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.doStop(QueuedThreadPool.java:126)
>       at 
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
>       at 
> org.eclipse.jetty.util.component.AggregateLifeCycle.doStop(AggregateLifeCycle.java:107)
>       at 
> org.eclipse.jetty.server.handler.AbstractHandler.doStop(AbstractHandler.java:69)
>       at 
> org.eclipse.jetty.server.handler.HandlerWrapper.doStop(HandlerWrapper.java:108)
>       at org.eclipse.jetty.server.Server.doStop(Server.java:342)
>       at 
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
>       at 
> org.apache.felix.http.jetty.internal.JettyService.stopJetty(JettyService.java:228)
>       at 
> org.apache.felix.http.jetty.internal.JettyService.access$100(JettyService.java:72)
>       at 
> org.apache.felix.http.jetty.internal.JettyService$3.doExecute(JettyService.java:169)
>       at 
> org.apache.felix.http.jetty.internal.JettyService$JettyOperation.call(JettyService.java:792)
>       at 
> org.apache.felix.http.jetty.internal.JettyService$JettyOperation.call(JettyService.java:783)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:744)
> Caused by:
> java.lang.ClassNotFoundException: Unable to load class 
> 'org.eclipse.jetty.util.thread.QueuedThreadPool$1' because the bundle wiring 
> for org.apache.felix.http.jetty is no longer valid.
>       at 
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1494)
>       at 
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
>       at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.doStop(QueuedThreadPool.java:126)
>       at 
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
>       at 
> org.eclipse.jetty.util.component.AggregateLifeCycle.doStop(AggregateLifeCycle.java:107)
>       at 
> org.eclipse.jetty.server.handler.AbstractHandler.doStop(AbstractHandler.java:69)
>       at 
> org.eclipse.jetty.server.handler.HandlerWrapper.doStop(HandlerWrapper.java:108)
>       at org.eclipse.jetty.server.Server.doStop(Server.java:342)
>       at 
> org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
>       at 
> org.apache.felix.http.jetty.internal.JettyService.stopJetty(JettyService.java:228)
>       at 
> org.apache.felix.http.jetty.internal.JettyService.access$100(JettyService.java:72)
>       at 
> org.apache.felix.http.jetty.internal.JettyService$3.doExecute(JettyService.java:169)
>       at 
> org.apache.felix.http.jetty.internal.JettyService$JettyOperation.call(JettyService.java:792)
>       at 
> org.apache.felix.http.jetty.internal.JettyService$JettyOperation.call(JettyService.java:783)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:744)
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to