Handle Application "Graceful Stop" with the LCA Protocol
Graceful stop is operation that allow application to complete current request handling before actual stop in case when such handling can require significant (time greater than application stop timeout) time.
Two new states are related to this command:
- SUSPENDING – This state means that an application has understood the command from LCA, so that the application does NOT accept new requests (unless specified by Management Layer) and will complete current requests. This status should be reported by an application as the result of Suspend command from LCA. If the application does no support graceful stop then it can just ignore the Suspend command; no state changes should be reported in this case.
- SUSPENDED – This state means that an application has completed handling current requests and can be stopped without any impact to its client.
For applications which DO support graceful stop, the scenario is as follows:
- SCI issues command "Stop application graceful"
- SCS receives command, sets up a suspended state timer and sends the Suspend application command to LCA
- LCA receives Suspend command and resends it to application (application receives EventSuspendApplication)
- Since the application supports this feature, it reports SUSPENDING state with RequestUpdateStatus and start behave accordingly
- SCS receives a status update through LCA and cancels the timer set at point (2).
- From this point, the application has unlimited time to complete handling requests (of course, it can also be stopped by usual stop command)
- When the application completes handling requests, it reports the status SUSPENDED (with RequestUpdateStatus)
- SCS receive the status update through LCA and stops the application with the usual stop command (EventChangeExecutionMode)
For applications which do NOT support graceful stop, the scenario is as follows:
- SCI issues the command: "Stop application graceful"
- SCS receives the command, sets up a suspended state timer and sends the Suspend application command to LCA
- LCA receives Suspend command and resends it to application
- Since the application does not support this feature, the Suspend command is ignored
- Suspended state timer set at point (2) expires in SCS. SCS determines that the application does not support Graceful stop.
- SCS issues an ordinary stop command to application (EventChangeExecutionMode).
Please also note that message between SCI-SCS and SCS-LCA are not same.
If your application should support graceful stop please check:
- If application receives Suspend command from LCA.
- If application correctly report SUSPENDING/SUSPENDED states.
- If application can be stopped by usual stop command.
If your application should NOT support graceful stop please check:
- If application can be stopped by usual stop command (in this case Graceful stop is equal to usual Stop command with some delay)