Interface Graceful

  • All Known Implementing Classes:
    Graceful.Shutdown

    public interface Graceful

    Jetty components that wish to be part of a Graceful shutdown implement this interface so that the shutdown() method will be called to initiate a shutdown. Shutdown operations can fall into the following categories:

    • Preventing new load from being accepted (eg connectors stop accepting connections)
    • Preventing existing load expanding (eg stopping existing connections accepting new requests)
    • Waiting for existing load to complete (eg waiting for active request count to reduce to 0)
    • Performing cleanup operations that may take time (eg closing an SSL connection)

    The CompletableFuture returned by the the shutdown call will be completed to indicate the shutdown operation is completed. Some shutdown operations may be instantaneous and always return a completed future.

    Graceful shutdown is typically orchestrated by the doStop methods of Server or ContextHandler (for a full or partial shutdown respectively).

    • Method Detail

      • shutdown

        java.util.concurrent.CompletableFuture<java.lang.Void> shutdown()
        Shutdown the component. When this method returns, the component should not accept any new load.
        Returns:
        A future that is completed once all load on the component is completed
      • isShutdown

        boolean isShutdown()
        Returns:
        True if shutdown() has been called.
      • shutdown

        static java.util.concurrent.CompletableFuture<java.lang.Void> shutdown​(Container component)
        Utility method to shutdown all Gracefuls within a container.
        Parameters:
        component - The container in which to look for Gracefuls
        Returns:
        A CompletableFuture that is complete once all returns from shutdown() of the contained Gracefuls are complete.
      • shutdown

        static java.util.concurrent.CompletableFuture<java.lang.Void> shutdown​(Graceful.ThrowingRunnable runnable)
        Utility method to execute a Graceful.ThrowingRunnable in a new daemon thread and be notified of the result in a CompletableFuture.
        Parameters:
        runnable - the ThrowingRunnable to run.
        Returns:
        the CompletableFuture to be notified when the runnable either completes or fails.