Folks, I've run into this with something other than jolokia. Is there any workaround you can think of?
On Wed, Dec 30, 2015 at 12:35 PM, Ed Welch <[email protected]> wrote: > Hi Benson, JB, > > I'm familiar with this issue, and tried pretty hard to find the root cause a > few months back. > > Ultimately, I believe this is a bug in Jetty. > > Originally I worked with Achim to see if this was a pax-web issue, you can > read about that here: https://ops4j1.jira.com/browse/PAXWEB-863 > > We figured out it wasn't a pax web problem and so I looked at Jetty. > > I sent a message to the jetty user group: > https://dev.eclipse.org/mhonarc/lists/jetty-users/msg06031.html > > To which the dev's asked me if I could recreate in jetty 9, which, at the > time, I didn't have any easy ability to do. So it kind of just fell into the > background. > > My use case did not require async handling, so I just changed to sync and the > stack traces went away. > > > Looking at your stack trace, it appears this issue still remains in jetty 9. > > I'm not sure if this same code exists in jetty 9, but I think this is where > the problem occurs: > > This starts on line 861 of org.eclipse.jetty.server.handler.ContextHandler > from jetty 8.1.15v20140411 > > switch (_availability) > { > case __STOPPED: > case __SHUTDOWN: > return false; > case __UNAVAILABLE: > baseRequest.setHandled(true); > > response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE); > return false; > default: > if ((DispatcherType.REQUEST.equals(dispatch) && > baseRequest.isHandled())) > return false; > } > > In the plain cxf case, we hit this block, with the Jolokia handler, and the > default case is hit, and that conditional evaluates as true (dispatch == > REQUEST and baseRequest.isHandled == true), which returns false, and results > in no further handling of the request by that handler > > However, in the ASYNC case, baseRequest.isHandled() is true, however, > dispatch==ASYNC causing this conditional to not return, which results in the > handler attempting to process the request, which leads to jolokia calling the > sendError method which in turn results in the error seen. > > > I *think* the default case of that switch statement needs to be more like > > if (((DispatcherType.REQUEST.equals(dispatch) || > DispatcherType.ASYNC.equals(dispatch)) && baseRequest.isHandled())) > > maybe you can resurrect this issue with the jetty guys? > > Regards, > Ed > > On Wed, 30 Dec 2015 08:12:16 -0500, Benson Margulies <[email protected]> > wrote: > >> // Make a bus factory so that the worker and front end, if >> co-resident, don't share. >> bus = BusFactory.newInstance().createBus(); >> // set the class loader so that the TCCL is reliably 'us' when we get called. >> bus.setExtension(bundleContext.getBundle().adapt(BundleWiring.class).getClassLoader(), >> ClassLoader.class); >> JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); >> sf.setBus(bus); >> sf.setServiceBean(this); >> sf.setAddress("/worker"); >> server = sf.create(); >> >> On Wed, Dec 30, 2015 at 1:54 AM, Jean-Baptiste Onofré <[email protected]> >> wrote: >> > How did you deploy the CXF endpoint ? >> > >> > Can you share the blueprint or activator code where you register the >> > endpoint ? >> > >> > Regards >> > JB >> > >> > >> > On 12/30/2015 12:15 AM, Benson Margulies wrote: >> >> >> >> /rest/worker/process is a CXF rest endpoint URL of mine. >> >> >> >> With Karaf 4.0.2, if I make this endpoint asynchronous, and I have the >> >> jolokia feature installed, I get the following backtrace from time to >> >> time. None of my calls to my endpoint fail, I just get these >> >> backtraces. >> >> >> >> Jolokia should be just it's own restful endpoint, so how is it >> >> involved in mine? And why does switching on async trigger all the >> >> trouble? >> >> >> >> >> >> 2015-12-29 14:32:14,328 | WARN | tp1821513140-131 | HttpChannel >> >> | 150 - org.eclipse.jetty.util - 9.2.10.v20150310 | >> >> /rest/worker/process >> >> java.lang.IllegalStateException: Committed >> >> at >> >> org.eclipse.jetty.server.Response.resetBuffer(Response.java:1253)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.Response.sendError(Response.java:567)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.Response.sendError(Response.java:544)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:167)[51:javax.servlet-api:3.1.0] >> >> at >> >> org.jolokia.osgi.security.BasicAuthenticationHttpContext.handleSecurity(BasicAuthenticationHttpContext.java:49)[164:org.jolokia.osgi:1.3.0] >> >> at >> >> org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:68)[191:org.ops4j.pax.web.pax-web-jetty:4.2.2] >> >> at >> >> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[146:org.eclipse.jetty.security:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:271)[191:org.ops4j.pax.web.pax-web-jetty:4.2.2] >> >> at >> >> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[148:org.eclipse.jetty.servlet:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:99)[191:org.ops4j.pax.web.pax-web-jetty:4.2.2] >> >> at >> >> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.Server.handleAsync(Server.java:553)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:261)[147:org.eclipse.jetty.server:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[150:org.eclipse.jetty.util:9.2.10.v20150310] >> >> at >> >> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[150:org.eclipse.jetty.util:9.2.10.v20150310] >> >> >> > >> > -- >> > Jean-Baptiste Onofré >> > [email protected] >> > http://blog.nanthrax.net >> > Talend - http://www.talend.com > >
