Consultor Eletrônico



Kbase P18668: Remote server get error 9874 because of too many left open queries
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   08/11/2007
Status: Verified

FACT(s) (Environment):

OpenEdge 10.1A
OpenEdge 10.0B
Progress 9.1E
Progress 9.1D

SYMPTOM(s):

Client session dies

All client sessions connected to a particular remote client server die.

SYSTEM ERROR: strent request for more than 64K. (9874)

Error message in log file of a connected Database or in a client log file or a webspeed server log.

May see vv_flush messages associated with clients from the same server.

May see abnormal termination errors in database log for clients connected to the same server.

Stack trace from _mprosrv reads:

strentd
strent
qrGetQuery
qrOpen

CAUSE:

Too many queries are left open on the remote server, because they are not closed properly on the client side. Then the mproserve process crashes.
Each query a client opens to a remote client server creates a structure in the memory of the remote client server.
The structure takes up a bit of memory.
Any queries left behind by clients or not released by clients tie up the memory and limit the number of future queries. Data structures are larger on 64-bit versions so it may not take as many open querries for this problem to occur in the newer versions of OpenEdge.

Code has been added to try to clean up after abnormally terminated client sessions but there may not be immediate identification of when a remote client has terminated.

Application code can open a query without closing the query and therefore tie up the server memory as well and since this isn't an abnormal termination, the code introduced to release memory of terminated clients will do nothing to release these resources.

FIX:

Analyze the application source code and ensure that queries which are opened are always closed as soon as the queries are no longer needed.