-
Notifications
You must be signed in to change notification settings - Fork 2k
Description
Jetty version(s)
Jetty 12.0.16
Jetty Environment
EE10
Description
I'm migrating from Jetty 11 to Jetty 12 and noticed a regression. Headers set by our Filters after a call to filterChain.doFilter
are missing or incorrect on certain URLs without any debug logging.
I was able to trace it to the fact that ResourceServlet
is committing the response here:
at org.eclipse.jetty.server.ResourceService.writeHttpContent(ResourceService.java:718)
at org.eclipse.jetty.server.ResourceService.sendData(ResourceService.java:670) //response.write(true, buffer, callback);
at org.eclipse.jetty.server.ResourceService.doGet(ResourceService.java:206)
at org.eclipse.jetty.ee10.servlet.ResourceServlet.doGet(ResourceServlet.java:530)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
at org.eclipse.jetty.ee10.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1379)
at org.eclipse.jetty.ee10.servlet.ServletHolder.handle(ServletHolder.java:736)
at org.eclipse.jetty.ee10.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1619)
After which modification of response headers in the filters after filterChain.doFilter()
call are silently ignored in ServletContextResponse
. For example:
@Override
public boolean onRemoveField(HttpField field) {
if (isCommitted())
return false;
This looks like a regression from Jetty 11, as the filters were able to correctly modify the headers of the response with Jetty 11.
Could ResourceServlet
/ ResourceService
not commit the response to let the filters do their job?
For additional context, this issue was hard to track and untangle because of the silent discarding of header modification. It would be nice to have at least a debug log if the header or status modification was rejected inside Jetty code because the response is already committed.
Test
I modified ResourceServletTest#testOutputStreamAndCharsetFiltered
to reproduce the issue:
Spikhalskiy@8054950