Skip to content

Change phases of WebServer start-stop and graceful shutdown lifecycles to allow other smart lifecycles to run before graceful shutdown #31714

Closed
@jGleitz

Description

@jGleitz

Use case: We would like to add some logic that runs on shutdown, but before the web server is shut down. To do so, we want to implement a SmartLifecycle with a phase that’s higher than WebServerGracefulShutdownLifecycle’s.

Our concrete use case is that we want to have the application wait some time before actually shutting down, as in #20995. However, the proposed solution in #20995 relies on hanging the thread that sends out the context closed event. We think that using the SmartLifecycle interface is more appropriate. However, since WebServerGracefulShutdownLifecycle’s phase is hard-coded to Integer.MAX_VALUE, we can’t do that.

Proposal: Add a property server.shutdown-phase to configure the SmartLifecycle phase of all WebServerGracefulShutdownLifecycles. Default the value to Integer.MAX_VALUE.

Alternative: Set the hard-coded phase of WebServerGracefulShutdownLifecycle to something lower than Integer.MAX_VALUE to allow using a higher phase. This is slightly less work, but is not strictly backwards-compatible, as it may influence the order in relation to other SmartLifecycles.

We would be happy to provide a pull request if one of the proposals is accepted.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions