Kbase P94033: .Net application hangs when attempting to read from the AppServer
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  12/23/2008 |
|
Status: Verified
SYMPTOM(s):
.Net application hangs when attempting to read from the AppServer
System.IO.IOException: Failed 1000 attempts to read TcpClientMsgInputStream
at Progress.UBroker.Client.TcpClientMsgInputStream.readstream(Byte[] msgbuf, Int32 ofst, Int32 len)
at Progress.UBroker.Client.TcpClientMsgInputStream.readubhdr()
at Progress.UBroker.Client.TcpClientMsgInputStream.readMsg()
at Progress.UBroker.Client.BrokerSystem.readPacket() (8409) . (7175)
FACT(s) (Environment):
OpenEdge 10.x
Windows
CAUSE:
When a .Net client connects to the AppServer the default value for the TcpClientRetry property is 1,000. This means that when a timeout is encountered reading data from the AppServer the Open Client runtime in .Net tries 1,000 times to retrieve the data (with a 250 millisecond delay between each try). This number of retries combined with the delay period combined with the amount of time the timeout takes ends up being approximately 60 minutes.
FIX:
Before the .Net application connects to the AppServer insert the following line of code (the code is C#, convert to other language as required):
Progress.Open4GL.RunTimeProperties.TcpClientRetry = SomeNumberGoesHere;
Replace SomeNumberGoesHere with the number of retries the Open Client runtime should attempt before throwing an exception