Feedback
Did this article resolve your question/issue?

   

Article

Random errors 778 796 reading ret=10054 errno=2

« Go Back

Information

 
TitleRandom errors 778 796 reading ret=10054 errno=2
URL NameP30138
Article Number000135737
EnvironmentProduct: OpenEdge
Version: 10.x, 11.x
OS: All supported platforms
Question/Problem Description
Client connections receive errors 778  errno=10054 and 735
The database log files show errors 796  errno=10054 and 794
Errno 10054 indicates that an existing connection was forcibly closed by the remote host.
Errors occurring randomly from a remote client
Client disconnects are not isolated to client/server connections
Shared-memory clients intermittently get disconnected with write socket error 796
Clients appending output to a file on an UNC drive disconnect with write socket errno=10054
 
Steps to Reproduce
Clarifying Information
Error MessageError reading socket, ret=10054, errno=2 (778)
** Incomplete write when writing to the server. (735)

Error writing msg, socket=<n> errno=10054 usernum=<n> disconnected. (796)
Usernum terminated abnormally. (794)
Defect Number
Enhancement Number
Cause
​Network problems/failure on client side. Progress requires a reliable network.

For remote connections: once connected to a database, there is no way to catch the fact that the connection is lost, or the database has been shut down.  Refer to Article  What is really behind the 778 error and is it caused by a Progress timeout?  

For any "client" where the application makes use of shared network drives. For example: where input/output files, application files, ini files which are loaded and unloaded, client logging to a remote file, multiple users (local and remote) append output to the same file on an UNC drive.
Resolution
Solve the Network problem with Network Administrators. 

Tools such as Wireshark may aid in locating various failures such as TCP checksum errors.
Network tests may reveal packets not received by the server when sent from specific clients (different routing) or packets dropped.

Ephemeral ports are another clue on 'socket errors':

A stress-related socket issue typically occurs sporadically as opposed to network issues that persist once triggered until resolved.  A stress-related socket issue arises when clients run out of ports on the client computer, or the server machine on which either local TCP/IP socket connections are being made or remote socket connections to the shared network drive.

The ephemeral ports range available is configurable and can be found for example on Windows by running:
$ netsh int ipv4 show dynamicport tcp
Ephemeral ports cannot be re-used until they've timed out:
$ netstat -ano -p tcp | find "TIME_WAIT"

TIME_WAIT indicates that local endpoint (this side) has closed the connection.
The connection is being kept around so that any delayed packets can be matched to the connection and handled appropriately.
The connections will be removed when they time out within four minutes (240 seconds).
Ref: http://en.wikipedia.org/wiki/Transmission_Control_Protocol.
 
Workaround
Notes
Last Modified Date11/20/2020 7:19 AM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.