org.jboss.hal.resources.previews.configuration.request-controller.html Maven / Gradle / Ivy
${build.shortName} can be suspended or shut down gracefully. This allows active requests to complete normally, without accepting any new requests. A timeout value specifies how long that the suspend or shut down operation will wait for active requests to complete. While the server is suspended, management requests are still processed.
Graceful shutdown is coordinated at a server-wide level, mostly focused on the entry points at which a request enters the server. The following subsystems support graceful shutdown:
- Undertow
- The
undertow
subsystem will wait for all requests to finish.
- Modcluster
- The
modcluster
subsystem will notify the load balancer that the server is suspending in the
PRE_SUSPEND
phase.
- EJB
- The
ejb3
subsystem will wait for all remote EJB requests and MDB message deliveries to finish. Delivery to MDBs is stopped in the
PRE_SUSPEND
phase. EJB timers are suspended, and missed timers will be activated when the server is resumed.
- EE Concurrency
- The server will wait for all active jobs to finish. All queued jobs will be skipped. Currently, since EE Concurrency does not have persistence, those queued jobs that were skipped will be lost.
While the server is in a suspended state, scheduled tasks will continue to execute at their scheduled times but will throw a
java.lang.IllegalStateException
. Once the server is resumed, scheduled tasks will continue to execute normally and in most cases, tasks will not need to be rescheduled.
- Batch
- The server will stop all running jobs within the timeout period and defer all scheduled jobs.
Graceful shutdown currently will not reject inbound remote distributed transactions or new inbound JMS messages. EE batch jobs and EE concurrency tasks scheduled by inflight activity are currently allowed to proceed. However, EE concurrency tasks submitted that pass the timeout window currently error when executed.
Requests are tracked by the request-controller subsystem. Without this subsystem, suspend and resume capabilities are limited and the server will not wait for requests to complete before suspending or shutting down. However, if you do not need this capability, the request-controller subsystem can be removed for a small performance improvement.