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

[jira] Commented: (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:comment-tabpanel&focusedCommentId=12992137#comment-12992137 ] 

Guido Reiff commented on CXF-3300:
----------------------------------

Now I'm much closer to the real problem and ... well - it can't be a CXF problem. In SLES Environment with the unexpected behavior, there are only two CXF Interceptor-Warinings for the outgoing transport, nothing else. So the ArrayIndexOutOfBoundsException ocures in the context, that no message could be delivered the the client that had been killed. So the real problem is: there is NO ClientAbortException thrown out of the underlying Catalina code. I assume that that's a problem of the underlying environment: SLES, ESX-Server or the network.

So the bug can be closed.

If you have any ideas why a normal close of the stream is recognized in Tomcat-Context instead of an abort of streaming I would be very grateful.

> 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