Kbase P175671: Error 4006 appears on the database log file
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/01/2011 |
|
Status: Unverified
SYMPTOM(s):
Error 4006 appears on the database log file
SYSTEM ERROR: Got message <msgcode> for disconnected user <user-num> (4006)
(4006) SYSTEM ERROR: Got message 20 for disconnected user 0
The message 20 stands for "database log message"
FACT(s) (Environment):
All Supported Operating Systems
OpenEdge 10.x
OpenEdge Category: Database
CAUSE:
The (4006) error appearing in the DB log file is the result of a message being sent to a server from a client after the client has disconnected from the database. The error is just a warning and should not be a cause for concern. A likely example where the (4006) error could be generated is as follows:
Remote Client A requests a connection to the database from database Broker B. Database Broker B looks for an available server for client A to connect to (using the rules governed by the -Mn, Ma and -Mi startup parameters). Broker B picks a server (say Server C) and sends a message to Client A telling it to connect to Server C on one of the available ports that Server C is listening on. Client A and Server C begin exchanging messages known as a network handshake to establish a connection. In the header of each message sent by a client there is the user number that the server has assigned to it. The server assigns that number towards the end of the handshake, and from that point forward, whenever the client sends a message, it includes that user number in the header so that the server can verify that the message received is coming from that client. However, before that point of the handshake is reached, the client sends messages to the server with a user number of 0.
In this example, for some reason, the handshake is interrupted and Server C marks the user slot it had reserved for the connecting Client A as available again, so another connection can use it. Server C continues to check for messages on each of the ports it is listening on. However Client A is still running and sending messages to Server C to complete the handshake. When Server C receives a message on a port it is listening on, it reads the user number from the header and verifies that the user is valid and connected. In this case, the Server recognizes that the user number of 0 that it read from the message header is invalid and generates the (4006) error.
This is most likely just a timing issue where the server recognized some network break at the TCP/IP layer before the client. However if there appear to be many (4006) errors in the database log file, then it may be advisable to check into the integrity of the network hardware to see if communication problems may be manifesting itself in these (4006) errors.
FIX:
This message cannot be suppressed, and nor it is a cause for concern.