(warning long post follows)
UsingOrion 1.5.2.
I have a bunch of users doing some very high volume uploads of files ranging
anywhere from 1Mb to about 70Mb.
I am using Orion's FilePostParser class to parse the input stream and
collect files and other data.

Every so often (becoming regular now), I keep getting the following sets of
errors

com.evermind.server.http.HttpIOException: Read timed out
 at com.evermind._crb.read(Unknown Source)
 at com.evermind.io.FilePostParser._afc(Unknown Source)
 at com.evermind.io.FilePostParser._ajc(Unknown Source)
 at com.evermind.io.FilePostParser.<init>(Unknown Source)
....

com.evermind.server.http.HttpIOException: Connection reset by peer: JVM_recv
in socket input stream read
 at com.evermind._crb.read(Unknown Source)
 at com.evermind.io.FilePostParser._afc(Unknown Source)
 at com.evermind.io.FilePostParser._ajc(Unknown Source)
 at com.evermind.io.FilePostParser.<init>(Unknown Source)
.....

java.lang.ArrayIndexOutOfBoundsException
 at com.evermind.io.FilePostParser._hy(Unknown Source)
 at com.evermind.io.FilePostParser._aec(Unknown Source)
 at com.evermind.io.FilePostParser._aic(Unknown Source)
 at com.evermind.io.FilePostParser._ahc(Unknown Source)
 at com.evermind.io.FilePostParser.hasMoreElements(Unknown Source)
......


The users are sitting on a T1 and my server is at a managed hosting site
which has OCxx coming in.  The servers themselves have 100MBs LAN
connnection to the switch. The server is on a 1.2GHz dual proc with 1GB Ram.

Have others seen such errors.  Are there any caveats to using Orion's class.
I am using the orion class in the following manner:

          Enumeration enumeration = new
FilePostParser(request.getInputStream(), request.getContentLength());
            (This line alone may generate the 2 different flavors of
HttpIOException listed above)
      ...
         while(enumeration.hasMoreElements()) {    // another source of
error - mostly ArrayIndexOutOfBounds
         {
              Object element = enumeration.nextElement();

               if ( element instanceof Map.Entry ) { // do something }
               else if (element instanceof PostFileInputStream)

                ... // do a buffered read from stream using a buffer of
about 8K
                int size = inStream.read(fileBytesArray,0,BUFFSIZE);
// <-- another source of HttpIOException
               }
          }
         }


 What's really causing the errors?  My understanding is that for the
enctype=multipart/form-data, its really a live input stream
which means that for a sufficiently large post not all data will arrive in
one chunk and the server will keep getting data from the browser until its
been sent.   I don't believe bandwitdth is an issue.
Do I need to switch to the orielly version of  parser classes.  (I don't
really want to write my own)

I'd appreciate any pointers/comments

TIA

-shal






Reply via email to