We have an issue where the calling application, using Open4GL, Hangs wen it calls an appserver if the apserver have been restarted since the connection was established.
To reproduce the issue follow the steps below.
Teproduce:
Result
When using a debugger where one can turn on the ability to break on an exception thrown ( before they are handled) One can se that Open4gl api has got in to some sort of infinite loop with 2 exeption beeing thrown and handled all the time.
We have tried to use the RuntimeParameters to tell the proxy to stop retrying but with no success.
Is there any way to check the status before we call the appserver, are there some properties that can be used to stop the infinite loop of exceptions. ( we have tried to wait for something like 4 hours hoping that there is some time out or so but with no luck) or is there any event we can listen for?
Please we nned some help or ideas .......
Below is the exeptions that is repeated and the call stack when inspecting the exception in Visual Studio.
We are using OpenEdge 10.2A and VB.NET and Visual Studio 2008 with .NetFramework 3.5.
Resproxy.dll is the result of Proxygen that exposes a number of Procedures on an appserver.
System.Net.Sockets.SocketException occurred
ErrorCode=10053
Message="En etablerad anslutning avbröts av programvaran i värddatorn"
NativeErrorCode=10053
Source="System"
StackTrace:
vid System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
InnerException:
CallStack in VS2008
System.dll!System.Net.Sockets.Socket.Receive(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags) + 0x4a bytes
System.dll!System.Net.Sockets.NetworkStream.Read(byte[] buffer, int offset, int size) + 0x84 bytes
Progress.o4glrt.dll!Progress.Common.Extra.BufferedInputStream.Read(byte[] buffer, int offset, int count) + 0x3e bytes
Progress.o4glrt.dll!Progress.UBroker.Client.TcpClientMsgInputStream.readstream(byte[] msgbuf, int ofst = 0, int len = 2) + 0x55 bytes
Progress.o4glrt.dll!Progress.UBroker.Client.TcpClientMsgInputStream.readubhdr() + 0x25 bytes
Progress.o4glrt.dll!Progress.UBroker.Client.TcpClientMsgInputStream.readMsg() + 0x77 bytes
Progress.o4glrt.dll!Progress.UBroker.Client.BrokerSystem.readMsg() + 0x29 bytes
Progress.o4glrt.dll!Progress.UBroker.Client.BrokerSystem.readPacket() + 0x7f bytes
Progress.o4glrt.dll!Progress.UBroker.Client.BrokerSystem.read(byte[] msgbuf = {byte[25000]}, int offset = 0, int len = 25000) + 0x17c bytes
Progress.o4glrt.dll!Progress.UBroker.Client.BrokerSystem.read(byte[] msgbuf) + 0x5f bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.SinkInputStream.ReadByte() + 0x95 bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.OutputParamReader.OutputParamReader(System.IO.Stream s, Progress.Open4GL.DynamicAPI.Session session) + 0x72 bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.Session.runProcedure0(string requestID, string procedureName = "SokResKund.p", Progress.Open4GL.DynamicAPI.ParameterSet parms = {Progress.Open4GL.DynamicAPI.ParameterSet}, bool persistent, bool internal_Renamed, long procId = 0, Progress.Open4GL.DynamicAPI.MetaSchema localSchema = {Progress.Open4GL.DynamicAPI.MetaSchema}, int stateModel) + 0xa5c bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.Session.runProcedure(string requestID, string procedureName, Progress.Open4GL.DynamicAPI.ParameterSet parms, bool persistent, bool internal_Renamed, long procId, Progress.Open4GL.DynamicAPI.MetaSchema localSchema, int stateModel) + 0x10a bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.Session.runProcedure(string requestID, string procedureName, Progress.Open4GL.DynamicAPI.ParameterSet parms, Progress.Open4GL.DynamicAPI.MetaSchema schema) + 0x1c bytes
Progress.o4glrt.dll!Progress.Open4GL.Proxy.ProObject.runProcedure(string requestID = "<REQ|O4GL-000010>", string procName = "SokResKund.p", Progress.Open4GL.DynamicAPI.ParameterSet params_Renamed = {Progress.Open4GL.DynamicAPI.ParameterSet}, Progress.Open4GL.DynamicAPI.MetaSchema schema) + 0x169 bytes
Progress.o4glrt.dll!Progress.Open4GL.Proxy.ProObject.runProcedure(string procName, Progress.Open4GL.DynamicAPI.ParameterSet params_Renamed, Progress.Open4GL.DynamicAPI.MetaSchema schema) + 0x22 bytes
resproxy.dll!planit.planet.resproxy.SokResKund(string pcEntityName, string pcOperationName, ref planit.planet.StrongTypesNS.dsContextDataSet dsContext = {planit.planet.StrongTypesNS.dsContextDataSet}, out planit.planet.StrongTypesNS.dsResKundDataSet dsResKund = {planit.planet.StrongTypesNS.dsResKundDataSet}, ref System.Data.DataSet phIODataSet = {System.Data.DataSet}, out string pcExcStatus = " ") + 0x109 bytes
System.IO.IOException occurred
Message="Det gick inte att läsa data från transportanslutningen: En etablerad anslutning avbröts av programvaran i värddatorn."
Source="System"
StackTrace:
vid System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
InnerException: System.Net.Sockets.SocketException
ErrorCode=10053
Message="En etablerad anslutning avbröts av programvaran i värddatorn"
NativeErrorCode=10053
Source="System"
StackTrace:
vid System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
vid System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
InnerException:
CallStack in VS2008
System.dll!System.Net.Sockets.NetworkStream.Read(byte[] buffer, int offset, int size) + 0x127 bytes
Progress.o4glrt.dll!Progress.Common.Extra.BufferedInputStream.Read(byte[] buffer, int offset, int count) + 0x3e bytes
Progress.o4glrt.dll!Progress.UBroker.Client.TcpClientMsgInputStream.readstream(byte[] msgbuf, int ofst = 0, int len = 2) + 0x55 bytes
Progress.o4glrt.dll!Progress.UBroker.Client.TcpClientMsgInputStream.readubhdr() + 0x25 bytes
Progress.o4glrt.dll!Progress.UBroker.Client.TcpClientMsgInputStream.readMsg() + 0x77 bytes
Progress.o4glrt.dll!Progress.UBroker.Client.BrokerSystem.readMsg() + 0x29 bytes
Progress.o4glrt.dll!Progress.UBroker.Client.BrokerSystem.readPacket() + 0x7f bytes
Progress.o4glrt.dll!Progress.UBroker.Client.BrokerSystem.read(byte[] msgbuf = {byte[25000]}, int offset = 0, int len = 25000) + 0x17c bytes
Progress.o4glrt.dll!Progress.UBroker.Client.BrokerSystem.read(byte[] msgbuf) + 0x5f bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.SinkInputStream.ReadByte() + 0x95 bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.OutputParamReader.OutputParamReader(System.IO.Stream s, Progress.Open4GL.DynamicAPI.Session session) + 0x72 bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.Session.runProcedure0(string requestID, string procedureName = "SokResKund.p", Progress.Open4GL.DynamicAPI.ParameterSet parms = {Progress.Open4GL.DynamicAPI.ParameterSet}, bool persistent, bool internal_Renamed, long procId = 0, Progress.Open4GL.DynamicAPI.MetaSchema localSchema = {Progress.Open4GL.DynamicAPI.MetaSchema}, int stateModel) + 0xa5c bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.Session.runProcedure(string requestID, string procedureName, Progress.Open4GL.DynamicAPI.ParameterSet parms, bool persistent, bool internal_Renamed, long procId, Progress.Open4GL.DynamicAPI.MetaSchema localSchema, int stateModel) + 0x10a bytes
Progress.o4glrt.dll!Progress.Open4GL.DynamicAPI.Session.runProcedure(string requestID, string procedureName, Progress.Open4GL.DynamicAPI.ParameterSet parms, Progress.Open4GL.DynamicAPI.MetaSchema schema) + 0x1c bytes
Progress.o4glrt.dll!Progress.Open4GL.Proxy.ProObject.runProcedure(string requestID = "<REQ|O4GL-000010>", string procName = "SokResKund.p", Progress.Open4GL.DynamicAPI.ParameterSet params_Renamed = {Progress.Open4GL.DynamicAPI.ParameterSet}, Progress.Open4GL.DynamicAPI.MetaSchema schema) + 0x169 bytes
Progress.o4glrt.dll!Progress.Open4GL.Proxy.ProObject.runProcedure(string procName, Progress.Open4GL.DynamicAPI.ParameterSet params_Renamed, Progress.Open4GL.DynamicAPI.MetaSchema schema) + 0x22 bytes
resproxy.dll!planit.planet.resproxy.SokResKund(string pcEntityName, string pcOperationName, ref planit.planet.StrongTypesNS.dsContextDataSet dsContext = {planit.planet.StrongTypesNS.dsContextDataSet}, out planit.planet.StrongTypesNS.dsResKundDataSet dsResKund = {planit.planet.StrongTypesNS.dsResKundDataSet}, ref System.Data.DataSet phIODataSet = {System.Data.DataSet}, out string pcExcStatus = " ") + 0x109 bytes
Our resident network expert looked at the information you posted. They confirmed the socket read exception is expected after a connected AppServers is stopped. But the consumption of system resources, and needing to stop the process using the task manager, is not the correct behavior. We ask that you contact OpenEdge technical support and file a bug.
Issue taken to Tech support
Hi Torbjörn, we are experiencing the same problem, with the same stack trace. Did you get an answer from tech support on this issue?