[ 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)