Interface Graceful

All Known Subinterfaces:
Connector, NetworkConnector
All Known Implementing Classes:
AbstractConnector, AbstractHTTP2ServerConnectionFactory.HTTP2SessionContainer, AbstractNetworkConnector, AntWebAppContext, ContextHandler, Graceful.Shutdown, HTTP3ServerConnector, HttpSpiContextHandler, LocalConnector, MovedContextHandler, NetworkTrafficServerConnector, QuicServerConnector, QuicSessionContainer, ServerConnector, ServletContextHandler, SessionTracker, SessionTracker, StatisticsHandler, UnixSocketConnector, WebAppContext

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 Details

    • shutdown

      CompletableFuture<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 CompletableFuture<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 CompletableFuture<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.