PASOE behavior for client disconnection

Posted by dbeavon on 15-Mar-2019 13:50

Is there a mechanism by which PASOE is supposed to prematurely STOP an agent session (ABL) when a remote client of an HTTP session (tomcat) is disconnected/aborted?

I'm wondering because occasionally we see (ABL) sessions running for a very long time, this is probably a report or long-running ad-hoc query of some kind.  We see the session running and we also see an HTTP session listed in the tomcat manager (localhost:8810/manager).  Typically we'll go looking for the remote APSV openclient, and it will long-since be terminated (or it had already closed its http client connection).

Yet another interesting thing to point out is that the PASOE session-manager (within tomcat) is actually aware of the client disconnection.  But it doesn't seem to bother to do any clean-up.  IE. It doesn't stop the (ABL) session from running, nor does it tell tomcat to expire the HTTP session.  Below is what the session-manager says in its logs:

18:25:41.483/393928554 [thd-10] ERROR c.p.appserv.adapters.apsv.Request - APSV(B2EFB591CD1F22BC8141F6217C21E73694FAB67D21C6.oepas1) : IOException while processing request : org.apache.catalina.connector.ClientAbortException: java.io.IOException: An existing connection was forcibly closed by the remote host. (18318)
18:25:41.486/393928557 [thd-10] ERROR c.p.appserv.adapters.apsv.Request - APSV(B2EFB591CD1F22BC8141F6217C21E73694FAB67D21C6.oepas1) : An error occurred processing the POST request :  Unexpected error : org.apache.catalina.connector.ClientAbortException: java.io.IOException: An existing connection was forcibly closed by the remote host. (18320)

When we see this, if we go into the  tomcat manager (localhost:8810/manager), we notice that it is still listed as a long-running HTTP session (because  session ID B2EFB591CD1F22BC8141F6217C21E73694FAB67D21C6 is still sitting around like nothing had happened).   IE. The PASOE session-manager doesn't bother to clear away the HTTP session, even though it is aware that it was remotely closed.  Worse yet it allows an expensive orphaned *ABL* session to continue running for a long time, without any final goal or purpose.

Ideally the PASOE session-manager would do more work when it discovers that a client abort had occurred ( "org.apache.catalina.connector.ClientAbortException: java.io.IOException: An existing connection was forcibly closed by the remote host." ).  Based on my observations, it doesn't do anything other than display that message in the session manager logs.

Please let me know if there is a well-defined behavior for APSV client disconnections (which use HTTP sessions).  If this is a bug, I can send a repro to PSC support.  It should be easy to demonstrate.  The only steps involved, as near as I can tell, are (1) client sends off a long-running request to PASOE, (2) client HTTP timeout expires or application terminates, and  (3) the tomcat session time is long enough - at 24 hours - that it would take an excessive amount of time for tomcat to close all its HTTP session, and inform the PASOE session manager about it.  (But since tomcat has already informed the PASOE session manager about the client abort, that should have already served the same purpose.)

Any help would be appreciated.

All Replies

This thread is closed