Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] [Stable 9.2.3.v20140905] java.lang.IllegalStateException: Response is committed in filterChain.doFilter

I didn't create a bug for this scenario (as it isn't a bug with jetty, but rather your set of filters, servlets, or configuration). 
what bug are you referring to?


--
Joakim Erdfelt <joakim@xxxxxxxxxxx>
Expert advice, services and support from from the Jetty & CometD experts

On Fri, Oct 10, 2014 at 4:34 AM, Matt Deimel <mdeimel@xxxxxxxxx> wrote:
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:43 AM, Joakim Erdfelt <joakim@xxxxxxxxxxx> wrote:
Response being committed, means something in your chain, your servlet, your filter, or your CustomResponseWrapper has already started to write a response, and the effort to add a new session cookie cannot be performed at that point in time. 

Look closer at com.shandianshua.satoshi.online.api.http.filter.ContentEnteiFilter.doFilter(ContentEnteiFilter.java:51)

Once the response headers have been sent, the response is "committed" and changes to the response / headers can no longer be made.

The last call in your stacktrace, to Request.getSession() is attempting to add an outgoing cookie for the session to the response, but the response has already been started.

--
Joakim Erdfelt <joakim@xxxxxxxxxxx>
Expert advice, services and support from from the Jetty & CometD experts

On Thu, Oct 9, 2014 at 8:12 AM, Pikachu Absol <lugia@xxxxxxxxxxxxxxxx> wrote:
Hi,

I write a filter to do something for the response, and host the war in Stable 9.2.3.v20140905

    public void doFilter (
        ServletRequest request,
        ServletResponse response,
        FilterChain chain
    ) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;

        CustomResponseWrapper wrapper = new CustomResponseWrapper(httpResponse);
        LOG.info("============is commited:\t" + response.isCommitted());
        chain.doFilter(request, wrapper);

         // code never get here
    }

I got the an exception below:

2014-10-09 22:58:23.124:WARN:oejs.ServletHandler:qtp2128697132-18: /v1/hello
java.lang.IllegalStateException: Response is committed
        at org.eclipse.jetty.server.Request.getSession(Request.java:1401)
        at org.eclipse.jetty.security.authentication.FormAuthenticator.validateRequest(FormAuthenticator.java:260)
        at org.eclipse.jetty.security.authentication.DeferredAuthentication.authenticate(DeferredAuthentication.java:68)
        at org.eclipse.jetty.server.Request.getUserPrincipal(Request.java:1480)
        at org.springframework.web.servlet.FrameworkServlet.getUsernameForRequest(FrameworkServlet.java:1022)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:958)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:769)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1667)
        at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:172)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)
        at com.shandianshua.satoshi.online.api.http.filter.ContentEnteiFilter.doFilter(ContentEnteiFilter.java:51)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1125)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1059)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:497)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:248)
        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:745)

Since I can't find any solutions or similar cases on Google, I switch to Stable 8.1.16.v20140903 with the exactly same war, and then the problem just disappear, everything runs fine.

Can somebody help ?

Thanks!

_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
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
jetty-users@xxxxxxxxxxx
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
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users


Back to the top