Feedback
 
Did this article resolve your question/issue?

   

Your feedback is appreciated.

Please tell us how we can make this article more useful. Please provide us a way to contact you, should we need clarification on the feedback provided or if you need further assistance.

Characters Remaining: 1025

 


Article

Graceful trim PASOE Agent terminates the client connection 7243 7241

« Go Back

Information

 
Article Number000089066
EnvironmentProduct: OpenEdge
Version: 11.5x, 11.6x, 11.7.1, 11.7.2
OS: All supported platforms
Question/Problem Description
A pasoe request throught Java openclient terminates with errors (7243)(7241)
The ABL Agent Session is ACTIVE when the Multi-Session Agent is trimmed
The MS-agent is stopped immediately, irrespective of whether the agent is idle or serving a request currently

The PASOE server is trimmed through the REST API interface which kills the request
curl -X DELETE -v http://uid:pwd@localhost:<port>/oemanager/applications/<App_name>/agents/pid

The following EXCEPTION is reported:

Reason: com.progress.open4gl.RunTime4GLStopException: 4GL STOP condition: The Server application has returned an error. (7243) (7241)
at com.progress.open4gl.javaproxy.ProObject.runProcedure(ProObject.java:331)
at com.progress.open4gl.javaproxy.OpenAppObjectImpl.runProc(OpenAppObjectIm...
at com.progress.open4gl.javaproxy.OpenAppObjectImpl.runProc(OpenAppObject.java:331
at <url>.openedge.SessionBase.runProcedure(SessionBase.java:157)
Steps to Reproduce
Clarifying Information
The expectation is that the ACTIVE Agent Session is allowed sometime to complete its work before the MS-Agent is stopped
Error MessageThe Server application has returned an error. (7243)
4GL STOP condition: <message text> (7241)
Defect/Enhancement Number
Cause
Resolution
Upgrade to OpenEdge 11.7.3 Service Pack.  

Two product improvements have been implemented: the first will alleviate this problem, the second will ensure new request continuity.

1. The ability to stop a MS-agent and specify how long it needs to wait for requests to complete (waitToFinish in milliseconds) before a STOP message is sent to the agent to shutdown.

Additionally, force it to shut down when it should not wait any longer (waitAfterStop in milliseconds). If the MS-agent finishes processing its current
request before waitToFinish expires, the agent will immediately shut down, otherwise a KILL message is sent to the MS-agent once waitAfterStop has expired:
 
//host_name:port/oemanager/applications/App_name/agents/agentID?waitToFinish=120000&waitAfterStop=10000

This may still end up sending a STOP condition to the running process when the ACTIVE session thread is terminated. The STOP condition still needs to be properly handled on the client side in the application code for a complete solution. 

2.  The ability to manually start an(other) agent through the REST API (also JMX and JConsole)

When an MS-Agent is stopped, there's a time delay in starting a new one to handle requests. Being able to preemptively start another MS-Agent is useful as this allows it to be available to handle requests before stopping the existing MS-Agent.
 
curl -X POST -v http://host_name:port/oemanager/applications/App_name/addAgent
Workaround
In OpenEdge 11.7.2, configure 2 agents that start up with PASOE with the minimum agents set to 2 by using numInitialAgents=2 with the (new in 11.7.2) minAgents=2 .

By configuring it this way, there are multiple MS-agents serving requests and having a spare at any one time ( for which the improvement described above in 11.7.3 to manually start the extra agent)

When a MS-agent is instructed to stop via the REST API to the agent with the offending ABL sessions:
curl -X DELETE //host_name:port/oemanager/applications/App_name/agents/agentID
  • The MS-agent will stop taking requests and after 10 seconds it will shut down that agent (which gives most requests time to finish, for which the improvement in 11.7.3 to make this time configurable described above). 
  • The second MS-agent is already online which can start handling client requests when the first MS-agent is stopped.
  • The minAgents will ensure that a new agent is started providing a spare for the next time a MS-agent needs to be stopped
Notes
Attachment 
Last Modified Date8/16/2018 1:06 PM