[
https://issues.apache.org/jira/browse/CXF-8629?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17907652#comment-17907652
]
John Yin commented on CXF-8629:
-------------------------------
[~reta], thanks for looking into the above report.
I noticed another strange issue. My application sends rest messages to another
server (which belongs to another company, therefore, I do not have access to it
except through the API). After using the hc5 jar, the client got
*org.apache.hc.core5.http.ConnectionClosedException: Connection closed by peer*
(exactly 1 minute after it sent the message) for certain messages (even with
retries), while no problem with other messages. The only difference between
the succeeded messages and failed messages is that the failed messages are a
little longer (with length > 2000 bytes). But if I shorten the failed message
payload from its original 2000+ bytes to 1000+ bytes, they would succeed. The
issue happens regardless whether AllowChunking (on the conduit) is set to true
or false. If hc5 jar is removed from classpath, the problem goes away.
I tried but could not reproduce the issue by sending messages from my client to
my server in the same application (both sides use hc5, of course).
Here is the stacktrace:
2024-12-21 20:17:34.754 [Camel (camel-1) thread #27 - seda://messageRouter]
PhaseInterceptorChain - Interceptor for
\{https://siemensfuturenowprod.service-now.com:443/api/sieag/siam/incident}WebClient
has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:67)
~[cxf-core-4.1.0.jar:4.1.0]
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
[cxf-core-4.1.0.jar:4.1.0]
at
org.apache.cxf.jaxrs.client.AbstractClient.doRunInterceptorChain(AbstractClient.java:717)
[cxf-rt-rs-client-4.1.0.jar:4.1.0]
at
org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:1085)
[cxf-rt-rs-client-4.1.0.jar:4.1.0]
at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:931)
[cxf-rt-rs-client-4.1.0.jar:4.1.0]
at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:900)
[cxf-rt-rs-client-4.1.0.jar:4.1.0]
at org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:363)
[cxf-rt-rs-client-4.1.0.jar:4.1.0]
at
org.apache.camel.component.cxf.jaxrs.CxfRsProducer.invokeHttpClient(CxfRsProducer.java:339)
[camel-cxf-rest-4.8.2.jar:4.8.2]
at
org.apache.camel.component.cxf.jaxrs.CxfRsProducer.process(CxfRsProducer.java:103)
[camel-cxf-rest-4.8.2.jar:4.8.2]
at
org.apache.camel.support.SynchronousDelegateProducer.process(SynchronousDelegateProducer.java:48)
[camel-support-4.8.2.jar:4.8.2]
at
org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:65)
[camel-support-4.8.2.jar:4.8.2]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:208)
[camel-core-processor-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:347)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:323)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:95)
[camel-core-processor-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:347)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:323)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.processor.TryProcessor$TryState.run(TryProcessor.java:115)
[camel-core-processor-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
[camel-base-engine-4.8.2.jar:4.8.2]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:163)
[camel-core-processor-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:347)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:323)
[camel-base-engine-4.8.2.jar:4.8.2]
at
org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:291)
[camel-seda-4.8.2.jar:4.8.2]
at
org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:191)
[camel-seda-4.8.2.jar:4.8.2]
at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:129)
[camel-seda-4.8.2.jar:4.8.2]
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[?:?]
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[?:?]
at java.base/java.lang.Thread.run(Thread.java:840) [?:?]
*Caused by: org.apache.hc.core5.http.ConnectionClosedException:
ConnectionClosedException invoking
https://siemensfuturenowprod.service-now.com:443/api/sieag/siam/incident/INC41805995:
Connection closed by peer*
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method) ~[?:?]
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
~[?:?]
at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
~[?:?]
at
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
~[?:?]
at
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?]
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1452)
~[cxf-rt-transports-http-4.1.0.jar:4.1.0]
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1433)
~[cxf-rt-transports-http-4.1.0.jar:4.1.0]
at
org.apache.cxf.transport.http.asyncclient.hc5.AsyncHTTPConduit$AsyncWrappedOutputStream.close(AsyncHTTPConduit.java:440)
~[cxf-rt-transports-http-hc5-4.1.0.jar!/:4.1.0]
at
org.apache.cxf.io.AbstractWrappedOutputStream.close(AbstractWrappedOutputStream.java:77)
~[cxf-core-4.1.0.jar:4.1.0]
at
org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:56)
~[cxf-core-4.1.0.jar:4.1.0]
at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:232)
~[cxf-core-4.1.0.jar:4.1.0]
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
~[cxf-core-4.1.0.jar:4.1.0]
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:717)
~[cxf-rt-transports-http-4.1.0.jar:4.1.0]
at
org.apache.cxf.transport.http.HttpClientHTTPConduit.close(HttpClientHTTPConduit.java:261)
~[cxf-rt-transports-http-4.1.0.jar:4.1.0]
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
~[cxf-core-4.1.0.jar:4.1.0]
... 31 more
*Caused by: org.apache.hc.core5.http.ConnectionClosedException: Connection
closed by peer*
at
org.apache.hc.core5.http.impl.nio.AbstractHttp1StreamDuplexer.onInput(AbstractHttp1StreamDuplexer.java:353)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.core5.http.impl.nio.AbstractHttp1IOEventHandler.inputReady(AbstractHttp1IOEventHandler.java:64)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.core5.http.impl.nio.ClientHttp1IOEventHandler.inputReady(ClientHttp1IOEventHandler.java:41)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.client5.http.impl.async.LoggingIOSession$1.inputReady(LoggingIOSession.java:238)
~[httpclient5-5.4.1.jar:5.4.1]
at
org.apache.hc.core5.reactor.ssl.SSLIOSession.decryptData(SSLIOSession.java:641)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.core5.reactor.ssl.SSLIOSession.access$200(SSLIOSession.java:74)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.core5.reactor.ssl.SSLIOSession$1.inputReady(SSLIOSession.java:202)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.core5.reactor.InternalDataChannel.onIOEvent(InternalDataChannel.java:143)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.core5.reactor.InternalChannel.handleIOEvent(InternalChannel.java:51)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.core5.reactor.SingleCoreIOReactor.processEvents(SingleCoreIOReactor.java:176)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.core5.reactor.SingleCoreIOReactor.doExecute(SingleCoreIOReactor.java:125)
~[httpcore5-5.3.1.jar:5.3.1]
at
org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor.execute(AbstractSingleCoreIOReactor.java:92)
~[httpcore5-5.3.1.jar:5.3.1]
at org.apache.hc.core5.reactor.IOReactorWorker.run(IOReactorWorker.java:44)
~[httpcore5-5.3.1.jar:5.3.1]
... 1 more
Any suggestion will be greatly appreciated.
Thanks!
> AsyncHTTPConduit (hc5) should support chunked request / response
> ----------------------------------------------------------------
>
> Key: CXF-8629
> URL: https://issues.apache.org/jira/browse/CXF-8629
> Project: CXF
> Issue Type: Bug
> Affects Versions: 3.5.0, 3.4.5
> Reporter: Andriy Redko
> Assignee: Andriy Redko
> Priority: Major
> Fix For: 4.1.0, 3.5.10, 3.6.5, 4.0.6
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)