...making sure to respond on the proper thread now (facepalm) Joakim - thanks for reviewing the code, and creating the bug. Quick followup question - do you know how long a bug like this usually takes to fix? I can understand that there are no guarantees, I'm just looking for a rough estimate - a few days, a few months, etc. I'm curious because the project I'm working on will be rolling out in the next month and a half, and I'll need to make a call on whether to wait for the fix or not. Thanks!
On Thu, Oct 9, 2014 at 10:37 PM, Joakim Erdfelt <[email protected]> wrote: > Bug opened at https://bugs.eclipse.org/bugs/show_bug.cgi?id=446563 > > -- > Joakim Erdfelt <[email protected]> > webtide.com <http://www.webtide.com/> - intalio.com/jetty > Expert advice, services and support from from the Jetty & CometD experts > eclipse.org/jetty - cometd.org > > On Thu, Oct 9, 2014 at 12:57 PM, Matt Deimel <[email protected]> wrote: > >> Joakim - I've added everything to a github repo here: >> https://github.com/mdeimel/sitemesh3-jetty-async >> >> The README should have everything needed, but if there are any questions >> on it let me know. Thanks! >> >> On Thu, Oct 9, 2014 at 1:59 PM, Joakim Erdfelt <[email protected]> >> wrote: >> >>> Sounds like we are at the point where a demonstration code/project and >>> bug filed would be of most use. >>> Explain how to run it, and what the expected results are. >>> >>> If this is a behavioral difference between tomcat and jetty then we >>> should at least be able to explain it, and hopefully point to where in the >>> spec one of is interpreting things differently. >>> >>> Would be the first time for an interpretation difference, this happens >>> often with new parts of the various specs (no new spec is spot on covering >>> all situations on the first try), and usually gets resolved in a mutual >>> fashion between us (and eventually becomes better defined in the official >>> spec in a later revision) >>> >>> >>> -- >>> Joakim Erdfelt <[email protected]> >>> webtide.com <http://www.webtide.com/> - intalio.com/jetty >>> Expert advice, services and support from from the Jetty & CometD experts >>> eclipse.org/jetty - cometd.org >>> >>> On Thu, Oct 9, 2014 at 11:53 AM, Matt Deimel <[email protected]> wrote: >>> >>>> Joakim, thanks for your response. >>>> >>>> After looking into this some more, I have noticed a few things: >>>> >>>> 1) The Jetty Proxy is actually getting an HttpServletResponseWrapper as >>>> the response, so any writing isn't actually closing the session. And the >>>> content from that call is being sent along to retrieve the Sitemesh >>>> decorator. I think that's why a call to forward() is available here after >>>> the proxy work - and the forwarded call is not actually being proxied (only >>>> the initial call is proxied) >>>> >>>> 2) The same exception occurs if I create an asynchronous servlet and >>>> try to decorate that. So I don't think this is related to the proxy >>>> specifically. >>>> >>>> 3) When retrieving a vanilla html content to decorate, everything works >>>> properly (and the HttpChannel.getCurrentHttpChannel() request returns a >>>> valid HttpChannelOverHttp object). >>>> >>>> In reference to #2, when I try to decorate an asynchronous servlet with >>>> Sitemesh, it works in Tomcat, but doesn't work in Jetty. I certainly don't >>>> understand the differences enough to know why that would be, but I thought >>>> I'd add that in case it's a helpful tip. The reason I'd like to use Jetty >>>> is because the proxy is so fast. >>>> >>>> Thanks. >>>> >>>> --Matt >>>> >>>> >>>> On Wed, Oct 8, 2014 at 2:01 PM, Joakim Erdfelt <[email protected]> >>>> wrote: >>>> >>>>> Looks like SiteMesh is doing a dispatcher.forward() after the proxy >>>>> request. >>>>> >>>>> I can't imagine that ever working under a valid proxy scenario. >>>>> Wouldn't the request + response be either underway / committed or done >>>>> / completed by that point? >>>>> >>>>> -- >>>>> Joakim Erdfelt <[email protected]> >>>>> webtide.com <http://www.webtide.com/> - intalio.com/jetty >>>>> Expert advice, services and support from from the Jetty & CometD >>>>> experts >>>>> eclipse.org/jetty - cometd.org >>>>> >>>>> On Wed, Oct 8, 2014 at 11:54 AM, Matt Deimel <[email protected]> >>>>> wrote: >>>>> >>>>>> Apparently responding in Nabble did not carry over all of my content >>>>>> in <raw> tags. So here's another attempt: >>>>>> >>>>>> This is a very late response - among other delays there was some work >>>>>> in the SiteMesh community to make SiteMesh3 asynchronous, which will get >>>>>> around some of the issues. Unfortunately I'm still finding a similar >>>>>> problem now when working through this situation. >>>>>> >>>>>> I've updated to Jetty 9.2.3.v20140905 >>>>>> >>>>>> The project is a Jetty Proxy with a SiteMesh filter. Trying to >>>>>> decorate proxied content. >>>>>> >>>>>> When I use AsyncProxyServlet$Transparent as the servlet in web.xml I >>>>>> receive the following error: >>>>>> 2014-10-08 13:43:28.593:WARN:oejh.HttpParser:qtp2070935783-20: >>>>>> badMessage: java.lang.IllegalStateException: too much data after closed >>>>>> for >>>>>> HttpReceiverOverHTTP@55b31984 on HttpConnectionOverHTTP@61505510(l:/ >>>>>> 127.0.0.1:60231 <-> r:localhost/127.0.0.1:8060) >>>>>> >>>>>> When I use ProxyServlet$Transparent as the servlet I receive the >>>>>> following stack trace: >>>>>> 2014-10-08 13:46:44.033:WARN:oejs.HttpChannelState:qtp1489294793-22: >>>>>> java.lang.NullPointerException >>>>>> at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:130) >>>>>> at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:72) >>>>>> at org.sitemesh.webapp.WebAppContext.dispatch(WebAppContext.java:168) >>>>>> at org.sitemesh.webapp.WebAppContext.decorate(WebAppContext.java:143) >>>>>> at >>>>>> org.sitemesh.BaseSiteMeshContext.decorate(BaseSiteMeshContext.java:39) >>>>>> at >>>>>> org.sitemesh.webapp.SiteMeshFilter.postProcess(SiteMeshFilter.java:83) >>>>>> at >>>>>> org.sitemesh.webapp.contentfilter.ContentBufferingFilter.processInternally(ContentBufferingFilter.java:217) >>>>>> at >>>>>> org.sitemesh.webapp.contentfilter.ContentBufferingFilter$2.onComplete(ContentBufferingFilter.java:175) >>>>>> at >>>>>> org.eclipse.jetty.server.HttpChannelState.completed(HttpChannelState.java:506) >>>>>> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:421) >>>>>> at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:262) >>>>>> at >>>>>> org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1173) >>>>>> at >>>>>> org.eclipse.jetty.server.HttpChannelState.complete(HttpChannelState.java:452) >>>>>> at >>>>>> org.eclipse.jetty.server.AsyncContextState.complete(AsyncContextState.java:92) >>>>>> at >>>>>> org.eclipse.jetty.proxy.ProxyServlet.onResponseSuccess(ProxyServlet.java:560) >>>>>> at >>>>>> org.eclipse.jetty.proxy.ProxyServlet$ProxyResponseListener.onComplete(ProxyServlet.java:815) >>>>>> at >>>>>> org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:193) >>>>>> at >>>>>> org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:185) >>>>>> at >>>>>> org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:484) >>>>>> at >>>>>> org.eclipse.jetty.client.HttpReceiver.responseSuccess(HttpReceiver.java:393) >>>>>> at >>>>>> org.eclipse.jetty.client.http.HttpReceiverOverHTTP.messageComplete(HttpReceiverOverHTTP.java:255) >>>>>> at >>>>>> org.eclipse.jetty.http.HttpParser.parseContent(HttpParser.java:1465) >>>>>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1275) >>>>>> at >>>>>> org.eclipse.jetty.client.http.HttpReceiverOverHTTP.parse(HttpReceiverOverHTTP.java:142) >>>>>> at >>>>>> org.eclipse.jetty.client.http.HttpReceiverOverHTTP.readAndParse(HttpReceiverOverHTTP.java:107) >>>>>> at >>>>>> org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:70) >>>>>> at >>>>>> org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:65) >>>>>> at >>>>>> org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:75) >>>>>> at >>>>>> org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:100) >>>>>> at >>>>>> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) >>>>>> at >>>>>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:610) >>>>>> at >>>>>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:539) >>>>>> at java.lang.Thread.run(Thread.java:722) >>>>>> >>>>>> The NullPointerException now appears to be the same root problem that >>>>>> started this thread, that HttpChannel.getCurrentHttpChannel() returns >>>>>> null >>>>>> in Dispatcher.forward(). >>>>>> protected void forward(ServletRequest request, ServletResponse >>>>>> response, DispatcherType dispatch) throws ServletException, IOException >>>>>> { >>>>>> Request baseRequest=(request instanceof >>>>>> Request)?((Request)request):HttpChannel.getCurrentHttpChannel().getRequest(); >>>>>> >>>>>> In both cases I can verify that the proxy request is being made, >>>>>> since it's another application I control, and it's receiving a proper >>>>>> request. >>>>>> >>>>>> Any suggestions on how to get around either of these problems? Thanks. >>>>>> >>>>>> On Wed, Oct 8, 2014 at 1:52 PM, mdeimel <[email protected]> wrote: >>>>>> >>>>>>> This is a very late response - among other delays there was some >>>>>>> work in the >>>>>>> SiteMesh community to make SiteMesh3 asynchronous, which will get >>>>>>> around >>>>>>> some of the issues. Unfortunately I'm still finding a similar >>>>>>> problem now >>>>>>> when working through this situation. >>>>>>> >>>>>>> I've updated to Jetty 9.2.3.v20140905 >>>>>>> >>>>>>> The project is a Jetty Proxy with a SiteMesh filter. Trying to >>>>>>> decorate >>>>>>> proxied content. >>>>>>> >>>>>>> When I use AsyncProxyServlet$Transparent as the servlet in web.xml I >>>>>>> receive >>>>>>> the following error: >>>>>>> >>>>>>> >>>>>>> When I use ProxyServlet$Transparent as the servlet I receive the >>>>>>> following >>>>>>> stack trace: >>>>>>> >>>>>>> >>>>>>> The NullPointerException now appears to be the same root problem that >>>>>>> started this thread, that HttpChannel.getCurrentHttpChannel() >>>>>>> returns null >>>>>>> in Dispatcher.forward(). >>>>>>> >>>>>>> >>>>>>> In both cases I can verify that the proxy request is being made, >>>>>>> since it's >>>>>>> another application I control, and it's receiving a proper request. >>>>>>> >>>>>>> Any suggestions on how to get around either of these problems? >>>>>>> Thanks. >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> View this message in context: >>>>>>> http://jetty.4.x6.nabble.com/jetty-users-Null-HttpChannel-getCurrentHttpChannel-in-ServletHandler-doFilter-tp4962799p4963207.html >>>>>>> Sent from the Jetty User mailing list archive at Nabble.com. >>>>>>> _______________________________________________ >>>>>>> jetty-users mailing list >>>>>>> [email protected] >>>>>>> To change your delivery options, retrieve your password, or >>>>>>> unsubscribe from this list, visit >>>>>>> https://dev.eclipse.org/mailman/listinfo/jetty-users >>>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> jetty-users mailing list >>>>>> [email protected] >>>>>> To change your delivery options, retrieve your password, or >>>>>> unsubscribe from this list, visit >>>>>> https://dev.eclipse.org/mailman/listinfo/jetty-users >>>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> jetty-users mailing list >>>>> [email protected] >>>>> To change your delivery options, retrieve your password, or >>>>> unsubscribe from this list, visit >>>>> https://dev.eclipse.org/mailman/listinfo/jetty-users >>>>> >>>> >>>> >>>> _______________________________________________ >>>> jetty-users mailing list >>>> [email protected] >>>> To change your delivery options, retrieve your password, or unsubscribe >>>> from this list, visit >>>> https://dev.eclipse.org/mailman/listinfo/jetty-users >>>> >>> >>> >>> _______________________________________________ >>> jetty-users mailing list >>> [email protected] >>> To change your delivery options, retrieve your password, or unsubscribe >>> from this list, visit >>> https://dev.eclipse.org/mailman/listinfo/jetty-users >>> >> >> >> _______________________________________________ >> jetty-users mailing list >> [email protected] >> To change your delivery options, retrieve your password, or unsubscribe >> from this list, visit >> https://dev.eclipse.org/mailman/listinfo/jetty-users >> > > > _______________________________________________ > jetty-users mailing list > [email protected] > To change your delivery options, retrieve your password, or unsubscribe > from this list, visit > https://dev.eclipse.org/mailman/listinfo/jetty-users >
_______________________________________________ jetty-users mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/jetty-users
