cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anthony Communier (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-5763) ClassCast Exception in AsyncHTTPConduit$AsyncWrappedOutputStream.close() method when using async and HttpAsyncClient
Date Sat, 07 Jun 2014 12:20:02 GMT

    [ https://issues.apache.org/jira/browse/CXF-5763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14020791#comment-14020791
] 

Anthony Communier commented on CXF-5763:
----------------------------------------

Since I have changed the UseAsyncPolicy to NEVER I do see this error anymore. It seems that
it occurs only when Apache HttpAsyncClient.(4.0.1) is used.

It occurs when response is sent back to the client.

In the log, the request has the id 75 (pattern in log => ID: 75)

The request is sent at 14:03:40.928. The response is sent back at 14:03:40.934 :


14:03:40.934 [default-workqueue-3] INFO  o.a.c.i.LoggingInInterceptor - Inbound Message
----------------------------
ID: 75
Address: http://localhost:41446/amp-interface/unsubscribe
Http-Method: POST
Content-Type: text/plain
Headers: {Accept=[application/xml], Content-Type=[text/plain], Connection=[Keep-Alive]}
--------------------------------------
14:03:40.934 [default-workqueue-3] DEBUG o.a.cxf.phase.PhaseInterceptorChain - Invoking handleMessage
on interceptor org.apache.cxf.jaxrs.client.spec.ClientResponseFilterInterceptor@ef09ea4
14:03:40.934 [I/O dispatcher 2] DEBUG o.a.h.i.n.c.ManagedNHttpClientConnectionImpl - http-outgoing-19
127.0.0.1:58580<->127.0.0.1:41446[ACTIVE][rw:rw]: Shutdown
14:03:40.934 [default-workqueue-3] DEBUG o.a.cxf.phase.PhaseInterceptorChain - Invoking handleMessage
on interceptor org.apache.cxf.jaxrs.client.WebClient$ClientAsyncResponseInterceptor@1fa68516
14:03:40.935 [I/O dispatcher 2] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange: 53]
connection aborted
14:03:40.935 [I/O dispatcher 2] DEBUG o.a.h.i.n.c.PoolingNHttpClientConnectionManager - Releasing
connection: [id: http-outgoing-19][route: {}->http://localhost:41446][total kept alive:
1; route allocated: 1 of 1000; total allocated: 2 of 5000]
14:03:40.935 [default-workqueue-3] INFO  c.c.c.techstats.TechStatRepository - Counter ready
to be closed : AMP_UNSUBSCRIBE_REQUEST
14:03:40.935 [I/O dispatcher 2] DEBUG o.a.h.i.n.c.PoolingNHttpClientConnectionManager - Connection
released: [id: http-outgoing-19][route: {}->http://localhost:41446][total kept alive: 1;
route allocated: 0 of 1000; total allocated: 1 of 5000]
14:03:40.935 [I/O dispatcher 2] DEBUG o.a.h.n.p.HttpAsyncRequestExecutor - http-outgoing-19
[CLOSED]: Disconnected

It seems that 2 threads are processing the request at the same time : [I/O dispatcher 2] and
[default-workqueue-3].

On HttpAsync side the http flow is identified by pattern : exchange: 53

1760: 14:03:40.928 [AMP-1] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange: 53] start
execution
1763: 14:03:40.929 [AMP-1] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange: 53] Request
connection for {}->http://localhost:41446
1766: 14:03:40.929 [AMP-1] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange: 53] Connection
allocated: http-outgoing-19 [ACTIVE]
1770: 14:03:40.931 [I/O dispatcher 2] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange:
53] Attempt 1 to execute request
1783: 14:03:40.931 [I/O dispatcher 2] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange:
53] produce content
1827: 14:03:40.935 [I/O dispatcher 2] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange:
53] connection aborted

There is another flow that worked :   pattern => exchange: 52 and pattern ID: 74

1597: 14:03:40.900 [AMP-1] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange: 52] start
execution
1600: 14:03:40.900 [AMP-1] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange: 52] Request
connection for {}->http://localhost:41446
1603: 14:03:40.903 [I/O dispatcher 2] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange:
52] Connection allocated: http-outgoing-19 [ACTIVE]
1611: 14:03:40.904 [I/O dispatcher 2] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange:
52] Attempt 1 to execute request
1624: 14:03:40.905 [I/O dispatcher 2] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange:
52] produce content
1625: 14:03:40.905 [I/O dispatcher 2] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange:
52] Request completed
1657: 14:03:40.912 [I/O dispatcher 2] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange:
52] Response received HTTP/1.1 200 OK
1659: 14:03:40.912 [I/O dispatcher 2] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange:
52] Consume content
1660: 14:03:40.913 [I/O dispatcher 2] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange:
52] Connection can be kept alive indefinitely
1662: 14:03:40.913 [I/O dispatcher 2] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange:
52] Response processed
1663: 14:03:40.913 [I/O dispatcher 2] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange:
52] releasing connection

The difference is that the the connection was aborted.




> ClassCast Exception in AsyncHTTPConduit$AsyncWrappedOutputStream.close() method when
using async and HttpAsyncClient 
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-5763
>                 URL: https://issues.apache.org/jira/browse/CXF-5763
>             Project: CXF
>          Issue Type: Bug
>          Components: Transports
>    Affects Versions: 3.0.0
>         Environment: Linux
> Java 7
>            Reporter: Anthony Communier
>            Assignee: Daniel Kulp
>         Attachments: TestUnsubscribeSM-output.txt
>
>
> Sometimes there is an error on connection close when using async client 
> javax.ws.rs.ProcessingException: java.lang.ClassCastException: org.apache.cxf.transport.http.asyncclient.AsyncHTTPConduit$AsyncWrappedOutputStream$1
cannot be cast to org.apache.cxf.io.CachedOutputStream
> 	at org.apache.cxf.jaxrs.client.WebClient.handleAsyncResponse(WebClient.java:1010) [cxf-rt-rs-client-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.jaxrs.client.WebClient.access$100(WebClient.java:81) [cxf-rt-rs-client-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.jaxrs.client.WebClient$ClientAsyncResponseInterceptor.handleMessage(WebClient.java:1298)
~[cxf-rt-rs-client-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
~[cxf-core-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.jaxrs.client.ClientMessageObserver.onMessage(ClientMessageObserver.java:56)
~[cxf-rt-rs-client-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1154)
~[cxf-rt-transports-http-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428)
~[cxf-core-3.0.0.jar:3.0.0]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_25]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_25]
> 	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353)
~[cxf-core-3.0.0.jar:3.0.0]
> 	at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
> Caused by: java.lang.ClassCastException: org.apache.cxf.transport.http.asyncclient.AsyncHTTPConduit$AsyncWrappedOutputStream$1
cannot be cast to org.apache.cxf.io.CachedOutputStream
> 	at org.apache.cxf.transport.http.asyncclient.AsyncHTTPConduit$AsyncWrappedOutputStream.close(AsyncHTTPConduit.java:397)
~[cxf-rt-transports-http-hc-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) ~[cxf-core-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:638) ~[cxf-rt-transports-http-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.endpoint.AbstractConduitSelector.complete(AbstractConduitSelector.java:209)
~[cxf-core-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.jaxrs.client.AbstractClient.preProcessResult(AbstractClient.java:534)
~[cxf-rt-rs-client-3.0.0.jar:3.0.0]
> 	at org.apache.cxf.jaxrs.client.WebClient.handleAsyncResponse(WebClient.java:1005) [cxf-rt-rs-client-3.0.0.jar:3.0.0]
> 	... 10 common frames omitted



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message