java.io.IOException: java.net.SocketException: Connection reset

Hi All,
We are getting the below error on the Test environment, we are using REST API, and internally on the main service it calls the pub.client:http service Once this service executes get the below error, we are connecting to the AWS S3 bucket.

When we hit the AWS S3 bucket URL from Postman it works fine.

Can anyone help on this issue?

Error:
java.io.IOException: java.net.SocketException: Connection reset

Error Type:
com.wm.app.b2b.server.ServiceException

Error Dump:

|com.wm.app.b2b.server.ServiceException: java.io.IOException: java.net.SocketException: Connection reset at pub.clientimpl.http(clientimpl.java:987) at sun.reflect.GeneratedMethodAccessor253.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:407) at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:649) at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39) at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:53) at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243) at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49) at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171) at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:303) at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:34) at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:371) at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:548) at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:386) at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:238) at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:225) at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:254) at com.wm.lang.flow.FlowMapInvoke.invokeService(FlowMapInvoke.java:186) at com.wm.lang.flow.FlowMap.invoke(FlowMap.java:288) at com.wm.lang.flow.FlowMap.invoke(FlowMap.java:131) at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:520) at com.wm.lang.flow.FlowState.stepIncremental(FlowState.java:437) at com.wm.lang.flow.FlowState.invoke(FlowState.java:331) at wm.server.flowdebugger.singleStepMap(flowdebugger.java:1203) at wm.server.flowdebugger.execute(flowdebugger.java:471) at sun.reflect.GeneratedMethodAccessor416.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:417) at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:649) at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39) at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:53) at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243) at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49) at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171) at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:303) at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:34) at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:371) at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:548) at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:386) at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:238) at com.wm.app.b2b.server.comm.DefaultServerRequestHandler.handleMessage(DefaultServerRequestHandler.java:119) at com.wm.app.b2b.server.HTTPMessageHandler.process(HTTPMessageHandler.java:156) at com.wm.app.b2b.server.HTTPDispatch.handleRequest(HTTPDispatch.java:170) at com.wm.app.b2b.server.Dispatch.run(Dispatch.java:375) at com.wm.util.pool.PooledThread.run(PooledThread.java:127) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.IOException: java.net.SocketException: Connection reset at com.wm.ext.jsse.JSSESecureSocketFactory.newSocket(JSSESecureSocketFactory.java:529) at com.wm.ext.jsse.JSSESecureSocketFactory.createSocket(JSSESecureSocketFactory.java:464) at com.wm.net.socket.pool.SocketPool.getSocketWrapper(SocketPool.java:196) at com.wm.net.socket.pool.SocketPoolManager._getSocketWrapper(SocketPoolManager.java:129) at com.wm.net.socket.pool.SocketPoolManager.getSocketWrapper(SocketPoolManager.java:111) at com.wm.net.NetURLConnection.getSocket(NetURLConnection.java:1061) at com.wm.net.NetURLConnection.openDirectConnection(NetURLConnection.java:1036) at com.wm.net.NetURLConnection.connect(NetURLConnection.java:197) at com.wm.net.NetURLConnection._getInputStream(NetURLConnection.java:405) at com.wm.net.NetURLConnection.getInputStream(NetURLConnection.java:320) at com.wm.net.HttpContext.getFinalInputStream(HttpContext.java:860) at com.wm.net.HttpContext.getInputStream(HttpContext.java:400) at com.wm.net.HttpContext.getInputStream(HttpContext.java:372) at com.wm.net.HttpContext.get(HttpContext.java:414) at com.wm.net.HttpContext.get(HttpContext.java:430) at pub.clientimpl.http(clientimpl.java:835) … 48 more Caused by: java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:209) at java.net.SocketInputStream.read(SocketInputStream.java:141) at sun.security.ssl.InputRecord.readFully(InputRecord.java:465) at sun.security.ssl.InputRecord.read(InputRecord.java:503) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) at com.wm.ext.jsse.JSSESecureSocketFactory.newSocket(JSSESecureSocketFactory.java:524) … 63 more |

Other Info:

wM version: 9.9
Java Version: 1.8.0_101 (52.0)

Best Regards,
Yogeshwar

IME, connection resets are most often due to network/firewall rules that block the traffic. Might be the case here.

1 Like

Yes Correct @reamon, I have already informed the network team to check on this issue.

Hello, @reamon - For this issue our network team made some changes S3 format [region/bucket name] may not be enabled so they have allowed it now but still we are getting the same error.

Any thoughts on this?

This can sometimes be a challenge, but if something along the network path is blocking the traffic within your network, the network team should be able to see what the firewalls are doing to that traffic (allow, deny). Shouldn’t have to guess or trial/error as inferred by the “may not be enabled” Should be able to know for sure one way or the other.

You have two types of urls for S3:
Global ones: {bucket-name}.s3.amazonaws.com
Regional one: {bucket-name}.s3.{region}.amazonaws.com

I’ve had once issues with the global one being blocked, but the regional one was working, because of network policies.
That was with integration runtimes deployed in AWS.