Enhanced ABL session management
- Last Updated: August 19, 2021
- 3 minute read
- OpenEdge
- Version 12.2
- Documentation
In OpenEdge 12.2, the PAS for OpenEdge multi-session agent self-manages ABL sessions, so that whenever an ABL session creation fails, subsequent requests are queued instead of failing, and executed when an ABL session becomes available.
This addresses failures due to resource unavailability in a production
environment and supports continuous operations of ABL applications. The enhanced ABL Session
Management functionality allows PAS for OpenEdge to dynamically change its in-memory maxABLSessionsPerAgent based on resource availability.
ABL Session Management reduces the in-memory value of of maxABLSessionsPerAgent if the multi-session agent reaches the limit of allowed
concurrent connections to a resource. Instead of connections failing due to exceeding the number
of concurrent connections to a resource, the multi-session agent alerts the PAS for OpenEdge
Session Manager to queue the requests, or start up a new multi-session agent (if one is
available), rather than return a failed request.
The value of is maxABLSessionsPerAgent is
represented in-memory with the property dynmaxablsessions
.
This behavior is enabled by default.
Here’s how it works
To provide an example use case:
A PAS for OpenEdge instance has its
maxABLSessionsPerAgent set to 200 in the
openedge.properties file.
The PAS for OpenEdge instance connects to an OpenEdge database that has a
Maximum Number of Users ( -n ) set to 100.
In this example, the database prevents more than 100 concurrent incoming requests, so the multi-session agent cannot start more than 99 ABL sessions when required. Therefore, any additional requested ABL sessions will fail due to exceding resource limits.
If a large connection event (a "storm of requests") occurs where a burst of people send requests, the multi-session agent turns the request storm into new sessions. The multi-session agent then sends the sessions to the OpenEdge database to request a resource. The database rejects concurrent requests after the 100th is received, and then remaining requests return as failed.
With the enhanced ABL Session Management, when the multi-session agent
receives the 100th request, the
minAvailableABLSessions property triggers the multi-session agent to change its
in-memory maxABLSessionsPerAgent value to 99. This is because
the multi-session agent is alerted that there are no more available sessions due to an error
message from the database.
With the maxABLSessionsPerAgent set to 99
in-memory, the PAS for OpenEdge Session Manager queues the remaining requests until an existing
ABL session becomes available. The Session Manager then routes a queued request to an available
ABL session in the multi-session agent. Instead of failing, the requests are queued in the
Session Manager until a session opens in the multi-session agent.
Controlling Min and Max Available ABL Sessions
The minAvailableABLSessions property has
been added to openedge.properties in support of enhanced
ABL Session Management. This property specifies the smallest number of available ABL sessions
that are reserved by the multi-session agent during its operation. The
minAvailableABLSessions property tries to pre-start an ABL session to ensure a
resource connection is available. If the multi-session agent detects that the number of
available sessions has fallen below the default value of 1, the multi-session agent signals to
the Session Manager to lower the maxABLSessionsPerAgent to
the number of current ABL sessions.
You can set the value of minAvailableABLSessions
higher than 1 to request that more additional available ABL sessions be reserved for
incoming requests.
When the number of minAvailableABLSessions
falls below the threshold defined in openedge.properties ,
then the value of the maxABLSessionsPerAgent property
changes to match the number of current ABL sessions.
The change of the maxABLSessionsPerAgent
value occurs in-memory rather than being written into the
openedge.properties file. This in-memory ABL session limit is stored in the
property dynmaxablsessions .
Enhanced ABL Session Management APIs
You can view, update, and reset the in-memory value of the maxABLSessionsPerAgent ( dynmaxablsessions
) property using OEJMX queries or the REST APIs provided by the OE Manager
application.
- Get dynamic session limit in PAS for OpenEdge Administration Tools Reference
- Update dynamic session limit in PAS for OpenEdge Administration Tools Reference
- Reset dynamic session limit in PAS for OpenEdge Administration Tools Reference
- Get dynamic ABL session limit query in PAS for OpenEdge Administration Tools Reference
- Update dynamic ABL session limit query in PAS for OpenEdge Administration Tools Reference
- Reset dynamic ABL session limit query in PAS for OpenEdge Administration Tools Reference