KB Article #179407
Java.io.IOException: disconnected while reading
Problem
A filter such as Connection or Connect to URL filter gets a "disconnected while reading" similar to the following:
java.io.IOException: con=0x000000000000,endpoint=example.com:80,bio=0x000000000000: disconnected while reading
at com.vordel.dwe.http.ClientTransaction.readResponse(Native Method)
at com.vordel.circuit.net.State.readResponse(State.java:104)
at com.vordel.circuit.net.State.sendBody(State.java:233)
at com.vordel.circuit.net.State.tryTransaction(State.java:378)
at com.vordel.circuit.net.ConnectionProcessor.invoke(ConnectionProcessor.java:285)
at com.vordel.circuit.net.ConnectToURLProcessor.invoke(ConnectToURLProcessor.java:66)
at com.vordel.circuit.InvocationEngine.invokeFilter(InvocationEngine.java:146)
at com.vordel.circuit.InvocationEngine.invokeCircuit(InvocationEngine.java:38)
at com.vordel.circuit.InvocationEngine.recordCircuitInvocation(InvocationEngine.java:272)
at com.vordel.circuit.InvocationEngine.processMessage(InvocationEngine.java:235)
at com.vordel.coreapireg.runtime.broker.InvokableMethod.invoke(InvokableMethod.java:447)
at com.vordel.apiportal.runtime.Broker.invokeMethod(Broker.java:148)
at com.vordel.coreapireg.runtime.CoreApiBroker.processRequest(CoreApiBroker.java:174)
at com.vordel.apiportal.runtime.Broker.processRequest(Broker.java:97)
at com.vordel.apiportal.runtime.virtualized.VApiRuntime.processRequest(VApiRuntime.java:83)
at com.vordel.apiportal.runtime.PortalBroker.processRequest(PortalBroker.java:38)
at com.vordel.dwe.http.HTTPPlugin.invokeDispose(HTTPPlugin.java:451)
at com.vordel.dwe.http.HTTPPlugin.invoke(HTTPPlugin.java:144)
Resolution
This type of error can happen for many different reasons and API Gateway logs alone are not enough to troubleshoot it. In general, this error means that the endpoint disconnected and the endpoint's logs should be investigated for reasons why. This can be caused by timeouts and other errors on the other end of the connection. If there is a proxy between the gateway and the endpoint, you have to look at that proxy for errors, as well, because it has its own set of timeout values that may have been reached or it could have experienced an error.