tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bojan Smojver <bo...@binarix.com>
Subject Re: MultipartRequest upload failing with large files
Date Sat, 30 Mar 2002 00:21:15 GMT
Don't use TC 4, but I can confirm that similar does work in TC
3.3/mod_jk 1.2/Apache 1.3.23/mod_ssl 2.8.7. I've just uploaded a 17 MB
binary file without problems (given there is enough memory for JVM).
However, I don't use O'Reilly class (*VERY* silly license), but my own
(which you can get from here
ftp://ftp.binarix.com/pub/params/params.tar.gz, it is licensed GPL and
it comes without any documentation ;-).

Bojan

On Sat, 2002-03-30 at 08:30, Matt.Cowley@providersolutions.net wrote:
> Hi folks.  Jason Hunter suggested I send this notice to the list, so here
> it is.
> 
> ----- Forwarded by Matt Cowley/Providersolutions on 03/29/02 04:33 PM -----
>                                                                                     
                              
>                     Matt Cowley                                                     
                              
>                                          To:     serlvet-interest@java.sun.com      
                              
>                     03/26/02             cc:                                        
                              
>                     03:04 PM             Subject:     MultipartRequest upload failing
with large files             
>                                                                                     
                              
>                                                                                     
                              
> 
> 
> 
> Hi folks.  We're having problems uploading large files with the OReilly
> MultipartRequest class when using ssl.  Files under 10mb work fine.  If we
> upload more than that (in one large file or a combination of smaller ones),
> we get an Array Index Out of Bounds exception (dump follows).  This only
> happens going through ssl; non-secure uploads work fine with very large
> files.
> 
> I found a very similar bug report on the servlets.com site (description
> follows), and upgraded to the 19-Jun-2001 version of the
> com.oreilly.servlet package.  Same symptoms after the upgrade.
> 
> Any ideas or help would be most appreciated.  Thanks.
> 
> 
> -matt
> 
> 
> Environment:
> ------------
> - Win2000 Server, patched up to latest levels
> - Tomcat 4.0.1 Binary distribution, running as a service
> - IIS 5.0, using ISAPI_Redirect.dll dated 12/08/01 (Thank you Henri Gomez!)
> - SSL Enabled through IIS
> - I have several servers with similar environments.  Some servers have
> multiple logical web servers with multiple Tomcat instances.  This
> particular server has only one instance of each.  However, the same
> behavior
> is observed on any server/instance with SSL.
> 
> Facts:
> ------
> 1] This only happens on https://, all other forms work fine.
> 2] This only happens on files larger than just under 11MB (11,172,378
> bytes,
> plus or minus a few bytes for filename payload).
> 3] The "Assert Failed" error comes from Ajp13.java, Ajp13Packet.java, or
> MsgAjp.java.  I am not a Java programmer (yes, another one of those
> 'systems' guys), but was able to dig throught the source to find the actual
> system.out lines.
> 4] 11,172,378 / 1364 = 8191+-, the same size as the ajp packet.  Why 1364
> ajp packets?  Anything smaller works fine.
> 
> 
> Here's the bug report from servlets.com:
>                                                                                     
                   
>                                                                                     
                   
>                                                                                     
                   
>  Bug: File upload does not work with Apache JServ when uploading large binary files 
                   
>                                                                                     
                   
>                                                                                     
                   
>  Symptoms: When handling a file upload the com.oreilly.servlet.MultipartRequest class
throws an         
>  ArrayIndexOutOfBoundsException.                                                    
                   
>                                                                                     
                   
>                                                                                     
                   
>  Reason: JServ supports the older Servlet API 2.0 and in the API 2.0 source code for
                   
>  javax.servlet.ServletInputStream there's a bug in the readLine(byte[] buf, int off,
int len) method    
>  where the len parameter is ignored, and as a result reading input lines that exceed
the buf length     
>  will throw an ArrayIndexOutOfBoundsException.                                      
                   
>                                                                                     
                   
>                                                                                     
                   
>  Workaround: The com.oreilly.servlet library has implemented its own buffering to work
around this      
>  issue. If you're using another library, upgrade to a server that supports Servlet API
2.1 or later.    
>                                                                                     
                   
>                                                                                     
                   
>                                                                                     
                   
>                                                                                     
                   
>                                                                                     
                   
>  Here's the exception dump:                                                         
                   
>  14:24:22,311 [Ajp13Processor[8009][24]] ERROR com.psc.ams.servlets.PSCUploadFilesByExtension
-         
>  Unexpected Exception occured in PSCUploadFiles.doPost().                           
                   
>  java.lang.ArrayIndexOutOfBoundsException                                           
                   
>       at java.lang.System.arraycopy(Native Method)                                  
                   
>       at org.apache.ajp.Ajp13Packet.getBytes(Ajp13Packet.java:459)                  
                   
>       at org.apache.ajp.Ajp13.refillReadBuffer(Ajp13.java:641)                      
                   
>       at org.apache.ajp.Ajp13.doRead(Ajp13.java:594)                                
                   
>       at org.apache.ajp.tomcat4.Ajp13InputStream.read(Ajp13InputStream.java:99)     
                   
>       at                                                                            
                   
>  com.oreilly.servlet.multipart.BufferedServletInputStream.fill(BufferedServletInputStream.java:63)
     
>       at                                                                            
                   
>  com.oreilly.servlet.multipart.BufferedServletInputStream.readLine(BufferedServletInputStream.java:107)

>       at                                                                            
                   
>  com.oreilly.servlet.multipart.LimitedServletInputStream.readLine(LimitedServletInputStream.java:59)
   
>       at com.oreilly.servlet.multipart.PartInputStream.fill(PartInputStream.java:92)
                   
>       at com.oreilly.servlet.multipart.PartInputStream.read(PartInputStream.java:190)
                  
>       at com.oreilly.servlet.multipart.PartInputStream.read(PartInputStream.java:151)
                  
>       at com.oreilly.servlet.multipart.FilePart.write(FilePart.java:186)            
                   
>       at com.oreilly.servlet.multipart.FilePart.writeTo(FilePart.java:145)          
                   
>       at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:139)
                        
>       at com.psc.ams.servlets.PSCUploadFilesByExtension.doPost(PSCUploadFilesByExtension.java:480)
     
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)               
                   
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)               
                   
>       at                                                                            
                   
>  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
     
>       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
     
>       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
           
>       at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
               
>       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
                   
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)      
                   
>       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
           
>       at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
               
>       at org.apache.catalina.valves.RequestDumperValve.invoke(RequestDumperValve.java:221)
             
>       at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
               
>       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
                   
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)      
                   
>       at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344) 
                   
>       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
                 
>       at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
               
>       at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
         
>       at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
               
>       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
                 
>       at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
               
>       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
                   
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)      
                   
>       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
             
>       at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
               
>       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
                   
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)      
                   
>       at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:371)     
                   
>       at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:424)         
                   
>       at java.lang.Thread.run(Thread.java:484)                                      
                   
>                                                                                     
                   
>                                                                                     
                   
>                                                                                     
                   
>                                                                                     
                   
>                                                                                     
                   
> 
> 
> 
> 
> 
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:tomcat-dev-help@jakarta.apache.org>
> 



--
To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@jakarta.apache.org>


Mime
View raw message