You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (JIRA)" <ji...@apache.org> on 2011/02/07 21:52:57 UTC

[jira] Updated: (CXF-3300) Missing Fault at kill of streaming client, instead ArrayIndexOutOfBoundsException occurs

     [ https://issues.apache.org/jira/browse/CXF-3300?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Kulp updated CXF-3300:
-----------------------------

    Fix Version/s: NeedMoreInfo


Honestly, I'm not sure what to suggest.  Just catching IOException SHOULD be ok as that's a checked exception and we just need to convert it to a RuntimeException.    All other RuntimeExceptions should just be converted to a Fault in the PhaseInterceptorChain anyway.   Thus, I really don't know what to suggest.   

The MimeBodyPartInputStream has changed with 2.3.1 and later.  Thus, an update MAY help.   I don't really know though.



> Missing Fault at kill of streaming client, instead ArrayIndexOutOfBoundsException occurs
> ----------------------------------------------------------------------------------------
>
>                 Key: CXF-3300
>                 URL: https://issues.apache.org/jira/browse/CXF-3300
>             Project: CXF
>          Issue Type: Bug
>          Components: Core, Transports
>    Affects Versions: 2.2.9
>         Environment: JBossAS 5.1 GA on OpenSuse/Suse Linux Enterprise Server, JDK 1.6.0_22 (64-Bit), CXF within jbossws-cxf-3.3.1.GA
>            Reporter: Guido Reiff
>             Fix For: NeedMoreInfo
>
>
> Large binary data is streamed to server using MTOM and stored to an Oracle 11g Database using its JDBC-Driver. In the development environment using a current OpenSuse Version: when the client stops uploading (tested by kill of process)  CXF throws a org.apache.cxf.interceptor.Fault 
>   at org.apache.cxf.transport.http.AbstractHTTPDestination.cacheInput(line 490)
> caused by: ClientAbortException:  java.io.IOException: Invalid chunk header" 
>   at org.apache.catalina.connector.InputBuffer.realReadBytes(line 342)
>   at org.apache.tomcat.util.buf.ByteChunk.substract(line 420)
> caused by: java.io.IOException: Invalid chunk header
>   at org.apache.coyote.http11.ChunkedFilter.parseChunkHeader(line 278) 
> As the Fault is a RuntimeException the database transaction will be rolled back. Thats the expected behavior.
> The same szenario in target environment (SLES) using identical (copied) JBoss and application code fails as there occures an ArrayIndexOutOfBoundsException, told as Warning from PhaseInterceptorChain
>   at org.apache.tomcat.util.buf.ByteChunk.substract(line 429) 
> ... 
>   at org.apache.cxf.attachement.MimeBodyPartInputStream.read(line 97) 
> ...
>   at org.apache.cxf.transport.http.AbstractHTTPDestination.cacheInput(line 488). 
> As I can see no exception is thrown out of the JDBC-Driver to my application. The transaction is not rolled back and destructed binary data has been persisted. 
> So my questions are: 
> 1) How can there be a difference in the two environments? (Probably not your concern).
> 2) It's a bug, that only IOExceptions are thrown as org.apache.cxf.interceptor.Fault at AbstractHTTPDestination(line 490), isn't it? The code of that method has not changed in Version 2.3.1.
> 3) If it's not a bug in your eyes. Is there a way for CXF-Users to control the behavior around this issue. 

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira