Carsten has fixed the issue with Felix http.jetty that was causing helloworld-config to fail with NPE.
Fix will be in http.jetty-3.2.2 — Derek > On 8 Jul 2016, at 11:16, Carsten Ziegeler (JIRA) <[email protected]> wrote: > > > [ > https://issues.apache.org/jira/browse/FELIX-5302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel > ] > > Carsten Ziegeler updated FELIX-5302: > ------------------------------------ > Affects Version/s: http.base-3.0.8 > http.bridge-3.0.8 > >> NPE using Http Whiteboard >> ------------------------- >> >> Key: FELIX-5302 >> URL: https://issues.apache.org/jira/browse/FELIX-5302 >> Project: Felix >> Issue Type: Bug >> Components: HTTP Service >> Affects Versions: http.base-3.0.8, http.jetty-3.2.0, http.bridge-3.0.8 >> Reporter: Derek Baum >> Assignee: Carsten Ziegeler >> Fix For: http.base-3.0.10, http.jetty-3.2.2, http.bridge-3.0.10 >> >> Attachments: http.jetty.bad.log, http.jetty.good.log >> >> >> I am getting this NPE about 50% of the time after reconfiguring my servlet >> (causing it to unregister and re-register): >> [org.apache.felix.http.jetty:3.2.0] Exception while processing request to >> /hello/sayHello >> java.lang.NullPointerException: null >> org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:85) >> org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:79) >> org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:124) >> org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:61) >> javax.servlet.http.HttpServlet.service(HttpServlet.java:725) >> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) >> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583) >> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:224) >> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1160) >> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) >> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) >> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1092) >> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) >> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) >> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) >> org.eclipse.jetty.server.Server.handle(Server.java:518) >> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308) >> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:244) >> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) >> org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) >> org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) >> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:246) >> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:156) >> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) >> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) >> java.lang.Thread.run(Thread.java:745) >> The servlet uses the Http Whiteboard: >> @Component( >> property = { >> HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN + >> "=/hello/sayHello", >> HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PATTERN + >> "=/hello/static/*", >> HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PREFIX + "=/static"}) >> public class HelloWorldServlet extends HttpServlet implements Servlet { >> } >> About 50% of the time when I initially deploy the Servlet, I've noticed that >> ServletRegistry.addServlet() is called twice for the same servlet with the >> same serviceId. >> I don't know why this happens, but when it does it leads to the NPE above. >> The second addServlet() invokes addToInactiveList(). >> The system works in this state, but it has a duplicate servlet handler in >> the inactive list. >> If the servlet is now reconfigured, causing it to unregister and >> re-register, we get the NPE above on the next request. >> This appears to be because ServletRegistry.removeServlet() fails to invoke >> "resolvers.remove(regHandler)", when the inactive list contains the argument >> ServletInfo. >> Alternatively, addServlet() should never allow a duplicate registration to >> be added to the inactive list. > > > > -- > This message was sent by Atlassian JIRA > (v6.3.4#6332)
