[
https://issues.apache.org/jira/browse/FELIX-4423?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
J.W. Janssen resolved FELIX-4423.
---------------------------------
Resolution: Fixed
Made the stopping of Jetty synchronous with the fix for FELIX-4422, and added
an {{awaitTermination()}} call in the {{stop()}} method. Initial smoke tests
show that the {{ClassCastExceptions}} are gone.
> 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)