Mantis - Resin
Viewing Issue Advanced Details
6065 minor always 06-29-17 17:48 07-11-17 15:39
wileysaw  
ferg  
normal  
closed 4.0.53  
unable to reproduce  
none    
none  
0006065: Multi-part request failed
Calling the RequestDispatcher#forward while ignoring the request content will result in a multipart request failed error message.

@WebServlet(name = "TestServlet", urlPatterns="test/servlet")
public class TestServlet extends HttpServlet {

    @Override
    protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("output.jsp").forward(req, resp);
    }
"resin-port-8080-13" 0000013 daemon prio=5 os_prio=0 tid=0x000000001f45b800 nid=0x1924 runnable [0x000000001ff0e000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
    at com.caucho.vfs.SocketStream.write(SocketStream.java:292)
    at com.caucho.vfs.WriteStream.nextBuffer(WriteStream.java:364)
    at com.caucho.server.http.HttpResponseStream.writeNextBufferImpl(HttpResponseStream.java:166)
    at com.caucho.server.http.ResponseStream.writeNextBuffer(ResponseStream.java:885)
    at com.caucho.server.http.ResponseStream.writeNext(ResponseStream.java:507)
    at com.caucho.server.http.ToByteResponseStream.write(ToByteResponseStream.java:344)
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
    at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
    at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)
    at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
    - locked <0x000000076f4c7858> (a java.io.OutputStreamWriter)
    at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
    at com.caucho.vfs.i18n.JDKWriter$OutputStreamEncodingWriter.write(JDKWriter.java:162)
    at com.caucho.server.http.ToByteResponseStream.flushCharBuffer(ToByteResponseStream.java:467)
    at com.caucho.server.http.ToByteResponseStream.print(ToByteResponseStream.java:421)
    at com.caucho.jsp.JspWriterAdapter.write(JspWriterAdapter.java:106)
    at _jsp._output__jsp._jspService(_output__jsp.java:56)
    at _jsp._output__jsp._jspService(_output__jsp.java:28)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:64)
    at com.caucho.jsp.Page.pageservice(Page.java:548)
    at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:194)
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156)
    at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:290)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:838)
    at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1353)
    at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1309)
    at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1293)
    at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1201)
    at com.caucho.network.listen.TcpSocketLink.handleAcceptTaskImpl(TcpSocketLink.java:997)
    at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:117)
    at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:93)
    at com.caucho.network.listen.SocketLinkThreadLauncher.handleTasks(SocketLinkThreadLauncher.java:169)
    at com.caucho.network.listen.TcpSocketAcceptThread.run(TcpSocketAcceptThread.java:61)
    at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173)
    at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118)
 TestServlet.java [^] (606 bytes) 06-29-17 17:48

Notes
(0006769)
ferg   
07-11-17 15:39   
server/1663

This probably isn't related to multipart. If the servlet never reads the content, the post is treated as any other post, not specially handled for multipart.

The issue might be related to some networking outside of Resin, for example a load balancer. If the post is very large, it's conceivable that the TCP is blocking because the post isn't read.