PAS appserver request being disconnected (by "idle reso

Posted by dbeavon on 11-Dec-2017 15:41

One of the "idle timeouts" below is causing the MS-agent _mproapsv to be terminated after 40 seconds.

Its pretty clear that nothing is "idle".  One of the sessions is active as shown below.  There is significant CPU and network activity related to the MS agent.  I'd like to know which of the "idle" timeouts (agent, resource, or session) is disconnecting my active/busy sessions.

The logs for the ABL application look like this:

16:28:28.417/284937 [TYsa8dvOQuWwC8gsD5z8SA-Monitor] WARN  c.p.appserv.IdleResourceWatchdog - shutdown 1 idle agents for agent pool DU7jvsWRQ4Oms1T3irYuYQ
16:28:29.417/285937 [catalina-exec-1] ERROR com.progress.appserv.Session - LocalSession(21F461AACAC39BDAD94B6B09F39C7E7495FA931C5C01.oepas_8815) : error occurred while reading a message processAgentRsp() = java.net.SocketException: Socket Closed:Socket Closed. (18300)
16:28:29.418/278249 [catalina-exec-1] ERROR com.progress.appserv.Agent - releaseABLSession(tX3SDWsGQmOpnaS50yKgAg) failed : invalid session count = 0 (18234)
16:28:29.419/278250 [catalina-exec-1] WARN  c.p.appserv.PoolMgt.Connection - TcpAgentConnectionPool(O4BAyKURTYWySCVnIRqMKg) : removeAgentConnection() failed to remove connection : size= 0 max= 1
16:28:29.419/285939 [catalina-exec-1] ERROR com.progress.appserv.Session - LocalSession(21F461AACAC39BDAD94B6B09F39C7E7495FA931C5C01.oepas_8815) : an error occurred while reading response message = java.net.SocketException: Socket Closed:Socket Closed. (18296)
16:28:31.727/288247 [DU7jvsWRQ4Oms1T3irYuYQ-agent-watchdog] WARN  c.p.appserv.PoolMgt.AgentWatchdog - AgentWatchdog(DU7jvsWRQ4Oms1T3irYuYQ) : agent tX3SDWsGQmOpnaS50yKgAg PID= 5212 has terminated. 

 

... and the exception from the .Net open client looks like this.

Progress.Open4GL.Exceptions.RunTime4GLErrorException occurred
  HResult=0x80131500
  Message=ERROR condition: network exception occurred processing request : com.progress.appserv.broker.exception.BrokerException$NetworkException: Agent : NetworkError[java.net.SocketException: Socket Closed : Error reading message for (D18AB682378304ADE21C7A7B8204159FA81E4C415DD5.oepas_8815) = Socket Closed]:Agent (7211) 

Its almost like the "IdleResourceWatchdog" is not aware that the session is actually in use, or doesn't understand the meaning of "idle".  I'm running OE 11.7.2 on Windows.  Any help would be greatly appreciated.

All Replies

Posted by Irfan on 11-Dec-2017 15:55

Hi David,

If 'Idle resource timeout' is greater than 0 then it waits until the given value and run the other idle timeout properties. In your case, it looks like the agent was terminated by 'idle agent timeout'. So was the agent in a state where it was continuously getting requests or was just connected by a client and the just staying idle ?

Posted by dbeavon on 11-Dec-2017 20:58

In my case it was a session-managed client which had already set up an app-object/connection via the (1) connection event proc, and (2) it started a persistent procedure, and (3) it was waiting for the result of an "internal procedure" which was a very lengthy operation (lets say 2-3 minutes).

In summary, the session was definitely not idle.  It is hard to see in my screenshot, but the session was at "ACTIVE" and was assigned a SESSION ID of 4.  It was running some ABL code that used to take under a minute (with a self-service connection to the database) but the duration had grown much longer now that we switched to using client-server connectivity to the database.  Either way, I need PAS to allow the code to run to completion, and not categorize it as "idle", or try to kill it.  

Please let me know if there is anything more I need to do to convince PAS that the busy session is not idle.  Before the 40 seconds expired, I saw an entry for this client in the "oe manager" screens under "sessions", "connections" and "agents".  

If it helps I can try to come up with a repro for tech support.  Let me know if you'd like me to take that approach.

Posted by dbeavon on 12-Mar-2018 09:40

Irfan,  You said:

>>> If 'Idle resource timeout' is greater than 0 then it waits until the given value and run the other idle timeout properties

Is there documentation for this behavior anywhere?  This is not intuitive, and the U/I in OEE does not explain that relationship in any way.

Posted by Irfan on 12-Mar-2018 09:44

That is what we are trying to fix in the doc for 11.7.3 and the next versions of it.

Right now, it is just as below and we will explain what need to be done.

idleResourceTimeout=0

       Not implemented. DO NOT CHANGE!

This thread is closed