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

John Yin commented on CXF-9093:
-------------------------------

Here is the stacktrace when the server closed the connection exactly 1 minute 
after waiting for client's payload:

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(Unknown 
Source) [?:?]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown 
Source) [?:?]
    at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Caused by: org.apache.hc.core5.http.ConnectionClosedException: 
ConnectionClosedException invoking 
https://siemensfuturenowprod.service-now.com:443/api/sieag/siam/incident/INC41941300:
 Connection closed by peer
    at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
 Method) ~[?:?]
    at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
 Source) ~[?:?]
    at 
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
 Source) ~[?:?]
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown 
Source) ~[?:?]
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source) 
~[?:?]
    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

> Client does not send entire payload (if size ~> 2500 bytes) when hc5, TLS1.3 
> are used
> -------------------------------------------------------------------------------------
>
>                 Key: CXF-9093
>                 URL: https://issues.apache.org/jira/browse/CXF-9093
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 4.1.0
>            Reporter: John Yin
>            Priority: Major
>
> With two different servers (one from ServiceNow and one from Zendesk), if my 
> CXF client uses HC5 (cxf-rt-transports-http-hc5-4.1.0.jar is in classpath), 
> the size of the JSON payload + HTTP headers ~> 2500 bytes, and TLS 1.3 is 
> used, then the client would not send the entire payload to server.  Both 
> sides would idle after the SSL handshake and client sends a small packet 
> until either the server closes the connection (resulting 
> connectionClosedException) or client times out, depending on the server 
> configuration.
> If any of the three conditions is changed, i.e., 1) not using hc5, 2) 
> reducing the payload size so that payload+headers < 2000 bytes, or 3) forcing 
> the use of TLS1.2, the problem would go away.  
> This does not happen with every TLS1.3 server.  For some TLS1.3 servers, I 
> have not encountered the issue.
> I am not sure if this is a CXF client problem, but since it happens against 
> two different servers, I thought I should report it to CXF.  My Wireshark log 
> does not reveal much info given that the data are encrypted and I do not have 
> the server's private key.
> Thanks!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to