[ 
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)

Reply via email to