Consultor Eletrônico



Kbase P26341: WebSpeed agent are leaking memory when using programs developed using Progress templates version 9.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   27/10/2006
Status: Unverified

FACT(s) (Environment):

Progress 9.1x

SYMPTOM(s):

Memory Leak in the WebSpeed agents

Programs developed using Progress templates version 9.1C or lower

CAUSE:

Bug# 20011203-017

CAUSE:

Progress templates are missing a "CREATE WIDGET-POOL." statement cause dynamic objects being created in the widget pool but not being released after the program finishes resulting in the continuous increment in memory.

FIX:

Upgrade to 9.1D or later. Note that this issue can still happen when executing any version of Progress WebSpeed Agent 9.1D or later, if the development of the programs happened using 9.1C or earlier version. So, it is required to get into each program and add a "CREATE WIDGET-POOL." line to the beginning of it.

Alternatively in 9.1C/3.1C, The following steps can be used to customize the WebSpeed dispatcher and be used a workaround.

Note that this fix should be used only if the application design is completely stateless.

1. Open the %DLC%\src\web\objects\web-disp.p file using the progress procedure
editor.
2. Find the following commented line in that file:

/* Try to run the Web object application program. */

The section of the web-disp.p will look like the following:

IF NOT debugging-enabled AND AppProgram BEGINS "src/web/":U THEN
RUN HtmlError IN web-utilities-hdl
(SUBSTITUTE ("Unable to run Web object '&1'", AppProgram )).
ELSE
/* Try to run the Web object application program. */
RUN run-web-object IN web-utilities-hdl (AppProgram).

/* If any debugging options are set except "top" ... */
IF debugging-enabled AND debug-options <> "" AND

3. Copy the following code and replace with the code in step # 2.

ELSE DO:
/* Try to run the Web object application program. */
CREATE WIDGET-POOL.
RUN run-web-object IN web-utilities-hdl (AppProgram).
DELETE WIDGET-POOL.
END.

4. Save it and recompile to create the debug-disp.r file.
5. Move the debug-disp.r file to %DLC%\tty\web directory.
6. Go to agent startup parameter in the broker properties and change the value of -p parameter from web\objects\web-disp.p to web\objects\debug-disp.p.
7. Restart the broker to apply those changes.

In 9.1D/3.1D, Use the following steps to customize the WebSpeed dispatcher.

Note that this fix should be used only if the application design is completely stateless.

1. Open the %DLC%\src\web\objects\web-disp.p file using the progress procedure
editor.
2. Find the following commented line in that file:

/* Try to run the Web object application program. */

The section of the web-disp.p will look like the following:

/* Try to run whatever was specified in the URL */
ELSE DO:
/* If debugging is disabled, don't allow running any files starting
with the path "src/web/". */
IF NOT debugging-enabled AND AppProgram BEGINS "src/web/":U THEN
RUN HtmlError IN web-utilities-hdl
(SUBSTITUTE ("Unable to run Web object '&1'", AppProgram )).
ELSE
/* Try to run the Web object application program. */
RUN run-web-object IN web-utilities-hdl (AppProgram).

/* If any debugging options are set except "top" ... */
IF debugging-enabled AND debug-options <> "" AND
LOOKUP("top":U,debug-options) = 0 THEN
RUN web/support/printval.p (debug-options).
END.

3. Copy the following code and replace with the code in step # 2.

ELSE DO:
/* If debugging is disabled, don't allow running any files starting
with the path "src/web/". */
IF NOT debugging-enabled AND AppProgram BEGINS "src/web/":U THEN
&nb.sp; RUN HtmlError IN web-utilities-hdl
(SUBSTITUTE ("Unable to run Web object '&1'", AppProgram )).
ELSE
/* Try to run the Web object application program. */
CREATE WIDGET-POOL.
RUN run-web-object IN web-utilities-hdl (AppProgram).
DELETE WIDGET-POOL.
/* If any debugging options are set except "top" ... */
IF debugging-enabled AND debug-options <> "" AND
LOOKUP("top":U,debug-options) = 0 THEN
RUN web/support/printval.p (debug-options).
END.

4. Save it and recompile to create the debug-disp.r file.
5. Move the debug-disp.r file to %DLC%\tty\web directory.
6. Go to agent startup parameter in the broker properties and change the value of -p parameter from web\objects\web-disp.p to web\objects\debug-disp.p.
7. Restart the broker to apply those changes..