Consultor Eletrônico



Kbase P5983: Setting AIA idleConnectTimeout might cause AppServer agents connections to stay busy.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   4/30/2010
Status: Verified

SYMPTOM(s):

Getting error in AppServer log Unable to find persistent procedure handle for proxy d<proxy_id>. (5494) due to extremely small value set for idleConnectTimeout.

Connect Failure: Application Service <Application Service> Unknown at NameServer at Host <Host> Port <Port>. (8234)


[07/01/01@12:01:01.001-0500] P-<PID#> T-TP-Processor1 1 AIA ----------- [<hostname>] CONNECT failure= (7,11)

AppServer connections not being released when HTTP session terminated.

FACT(s) (Environment):

All Supported Operating Systems
OpenEdge 10.x
JSE (Java Servlet Engines)

CAUSE:

When a client who is using a Web Browser or WebClient is connecting to a database through the AIA the connections are not static connections.
Connections are only open when information is being transmitted to or from the AppServer.

The AppServer Internet Adapter keeps a thread to manage these connections.

If a WebClient or Web Browser session is terminated or the user decides to discontinue communication the AIA will hold the thread and therefore also hold the connection to the AppServer open.

This might cause all AppServer connections to be busy.

If the value of idleConnectTimeout is set too low then AIA sessions may be terminated before the user or the AppServer expects yielded errors by the AppServer.

FIX:

To modify how long the connections will be held open by the AIA without interaction from the clients modify the idleConnectionTimeout setting in the ubroker.properties file used by the AIA.

The default value is 3600 which equates to 1 hour.
Example:
idleConnectionTimeout=3600

If you wish the AIA to close inactive connections if the connection has been inactive for 10 minutes you would set idleConnectionTimeout to 600.
Example:
idleConnectionTimeout=600

Idle is defined as no transmissions made by the WebClient or Web Browser.

Keyboard activity or mouse activity from the client are not relevant since the AIA doesn't see anything but transmissions through TCP and it is only when a function or button click causes some request or data to be transmitted that the AIA is aware of activity.
Only transmissions or requests are monitored, therefore if the client is typing and does not complete the operation and transmit data within the idleConnectionTimeout frame of time the AIA will close the thread and this might yield an error for the AppServer when the client tries to send data that the AppServer is no longer expecting.