SAP Cloud SDK SoapRequest Timeout After 60s

30 Views Asked by At

Issue: SAP Cloud SDK SoapRequest timeout after 60s Reproduce issue:

  1. Adopt SAP Cloud SDK version: 5.1.0 with jdk17

  2. Configure destination with adding two parameters: HTML5.ConnectionTimeoutInSeconds=120 HTML5.SocketReadTimeoutInSeconds=300

  3. Using connectivity service and destination service to consume on-premise SAP SOAP API

  4. Error log:

    STDOUT Caused by: org.apache.axis2.AxisFault: Read timed out STDOUT at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) ~[axis2-kernel-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl.sendViaPost(HTTPSenderImpl.java:242) ~[axis2-transport-http-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:121) ~[axis2-transport-http-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:403) ~[axis2-transport-http-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:234) ~[axis2-transport-http-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:431) ~[axis2-kernel-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:399) ~[axis2-kernel-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225) ~[axis2-kernel-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.client.OperationClient.execute(OperationClient.java:150) ~[axis2-kernel-1.7.9.jar:1.7.9] STDOUT at com.xxx.xxx.xxx.soapclient.QCD_011_SALESORDERMAStub.simulateSalesOrder(QCD_011_SALESORDERMAStub.java:524) ~[classes/:na] STDOUT at com.xxx.xxx.xxx.controllers.ToolController.lambda$testOrderSimulation$504d6b90$1(ToolController.java:140) ~[classes/:na] STDOUT at com.sap.cloud.sdk.s4hana.connectivity.soap.SoapRequest.execute(SoapRequest.java:442) ~[soap-5.1.0.jar:na]

  5. Detailed logs

    STDOUT java.net.SocketTimeoutException: Read timed out STDOUT at java.base/sun.nio.ch.NioSocketImpl.timedRead(Unknown Source) ~[na:na] STDOUT at java.base/sun.nio.ch.NioSocketImpl.implRead(Unknown Source) ~[na:na] STDOUT at java.base/sun.nio.ch.NioSocketImpl.read(Unknown Source) ~[na:na] STDOUT at java.base/sun.nio.ch.NioSocketImpl$1.read(Unknown Source) ~[na:na] STDOUT at java.base/java.net.Socket$SocketInputStream.read(Unknown Source) ~[na:na] STDOUT at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:161) ~[httpcore-4.4.16.jar:4.4.16] STDOUT at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:82) ~[httpcore-4.4.16.jar:4.4.16] STDOUT at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:276) ~[httpcore-4.4.16.jar:4.4.16] STDOUT at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138) ~[httpclient-4.5.14.jar:4.5.14] STDOUT at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56) ~[httpclient-4.5.14.jar:4.5.14] STDOUT at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) ~[httpcore-4.4.16.jar:4.4.16] STDOUT at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:294) ~[httpcore-4.4.16.jar:4.4.16] STDOUT at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:257) ~[httpclient-4.5.14.jar:4.5.14] STDOUT at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:207) ~[httpclient-4.5.14.jar:4.5.14] STDOUT at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273) ~[httpcore-4.4.16.jar:4.4.16] STDOUT at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) ~[httpcore-4.4.16.jar:4.4.16] STDOUT at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:679) ~[httpclient-4.5.14.jar:4.5.14] STDOUT at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:481) ~[httpclient-4.5.14.jar:4.5.14] STDOUT at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835) ~[httpclient-4.5.14.jar:4.5.14] STDOUT at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) ~[httpclient-4.5.14.jar:4.5.14] STDOUT at org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl.executeMethod(HTTPSenderImpl.java:873) ~[axis2-transport-http-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl.sendViaPost(HTTPSenderImpl.java:238) ~[axis2-transport-http-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:121) ~[axis2-transport-http-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:403) ~[axis2-transport-http-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:234) ~[axis2-transport-http-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:431) ~[axis2-kernel-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:399) ~[axis2-kernel-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225) ~[axis2-kernel-1.7.9.jar:1.7.9] STDOUT at org.apache.axis2.client.OperationClient.execute(OperationClient.java:150) ~[axis2-kernel-1.7.9.jar:1.7.9]

1

There are 1 best solutions below

0
Johannes Schneider On

The SAP Cloud SDK for Java does neither evaluate the HTML5.ConnectionTimeoutInSeconds nor the HTML5.SocketReadTimeoutInSeconds destination properties.

As far as I can tell (according to SAP Note 2680207), these properties are specific to the SAP Approuter when being deployed within the SAP Neo cloudplatform.

Nevertheless, the SAP Cloud SDK offers some configuration APIs for applications to tune the HTTP client creation - including a connection timeout. These timeouts, however, are shared for all HTTP clients (i.e. independent of the destination configuration).