Kbase P184862: AppServer log file grows very quickly with error 7313
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  3/29/2011 |
|
Status: Unverified
SYMPTOM(s):
AppServer log file grows very quickly with error 7313
Cannot run GET methods on query until it is opened. (7313)
Error 7313 repeats many times in the AppServer log filling the log and available disc space very quickly.
The AppServer log file looks like:
AS -- Cannot run GET methods on query until it is opened. (7313)
AS -- ** 4GL Debug-Alert Stack Trace **
AS -- --> getArticles D:\App\proc\srvrp.r (D:\App\proc\srvrp.r) at line 2360
AS -- WebService.p (D:\App\com\WebService.r) at line 186
AS -- Cannot run GET methods on query until it is opened. (7313)
AS -- ** 4GL Debug-Alert Stack Trace **
AS -- --> getArticles D:\App\proc\srvrp.r (D:\App\proc\srvrp.r) at line 2360
AS -- WebService.p (D:\App\com\WebService.r) at line 186
AS -- Cannot run GET methods on query until it is opened. (7313)
AS -- ** 4GL Debug-Alert Stack Trace **
AS -- --> getArticles D:\App\proc\srvrp.r (D:\App\proc\srvrp.r) at line 2360
AS -- WebService.p (D:\App\com\WebService.r) at line 186
FACT(s) (Environment):
All Supported Operating Systems
Progress 9.x
OpenEdge 10.x
CAUSE:
The cause of the problem is because an invalid character (e.g. (, ), #, ! etc) is being passed as an argument '&1' to a query string, which is causing the QUERY-OPEN method to fail. But regardless of whether the query has successfully been opened, the GET-NEXT method continues to try to navigate through the query result, and this repeatedly triggers the 7313 error. For example:
cQuery = "FOR EACH <table> NO-LOCK WHERE <table>.login_company_obj = '&1'".
hQry:QUERY-PREPARE(cQuery).
hQry:QUERY-OPEN().
REPEAT:
hQry:GET-NEXT().
IF hQry:QUERY-OFF-END THEN LEAVE.
END.
FIX:
Test the return values of the QUERY-PREPARE or GET-NEXT methods to determine if they have executed successfully. For example:
l1 = hQry:GET-NEXT().
IF NOT l1 THEN LEAVE.
Alternatively suppress any returned errors and then test for errors using ERROR-STATUS:ERROR and ERROR-STATUS:NUM-MESSAGES. For example:
REPEAT:
hQry:GET-NEXT() NO-ERROR.
IF ERROR-STATUS:NUM-MESSAGES > 0 OR ERROR-STATUS:ERROR THEN
LEAVE.
IF hQry:QUERY-OFF-END THEN
LEAVE.
In this last example it is necessary to test both ERROR-STATUS:ERROR and ERROR-STATUS:NUM-MESSAGES because not all errors set the ERROR-STATUS:ERROR attribute.