Class CoordinatedShutdown
- All Implemented Interfaces:
Extension
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classstatic classstatic classstatic classstatic classstatic classstatic interfacestatic interfaceReason for the shutdown, which can be used by tasks in case they need to do different things depending on what caused the shutdown.static class -
Method Summary
Modifier and TypeMethodDescriptionstatic CoordinatedShutdown.ReasonvoidJava API: Add an actor termination task to a phase.voidaddActorTerminationTask(String phase, String taskName, ActorRef actor, scala.Option<Object> stopMsg) Scala API: Add an actor termination task to a phase.Java API: Add a JVM shutdown hook that will be run when the JVM process begins its shutdown sequence.<T> CancellableaddCancellableJvmShutdownHook(scala.Function0<T> hook) Scala API: Add a JVM shutdown hook that will be run when the JVM process begins its shutdown sequence.addCancellableTask(String phase, String taskName, Supplier<CompletionStage<Done>> task) Java API: Add a task to a phase, returning an object which will cancel it on demand and remove it from the task pool (so long as the same task has not been added elsewhere).addCancellableTask(String phase, String taskName, scala.Function0<scala.concurrent.Future<Done>> task) Scala API: Add a task to a phase, returning an object which will cancel it on demand and remove it from the task pool (so long as the same task has not been added elsewhere).voidaddJvmShutdownHook(Runnable hook) Java API: Add a JVM shutdown hook that will be run when the JVM process begins its shutdown sequence.<T> voidaddJvmShutdownHook(scala.Function0<T> hook) Scala API: Add a JVM shutdown hook that will be run when the JVM process begins its shutdown sequence.voidJava API: Add a task to a phase.voidScala API: Add a task to a phase.static Tapply(ActorSystem system) static Tapply(ClassicActorSystemProvider system) static CoordinatedShutdown.Reasonstatic CoordinatedShutdown.Reasonstatic CoordinatedShutdown.Reasonstatic CoordinatedShutdowncreateExtension(ExtendedActorSystem system) static final booleanstatic CoordinatedShutdownget(ActorSystem system) static CoordinatedShutdownget(ClassicActorSystemProvider system) TheReasonfor the shutdown as passed to therunmethod.static final inthashCode()static CoordinatedShutdown.Reasonstatic CoordinatedShutdown.Reasonstatic CoordinatedShutdown$lookup()static StringLast phase.static StringPhase for custom application tasks that are to be run after cluster shutdown and before ActorSystem termination.static StringPhase for custom application tasks that are to be run after service shutdown and before cluster shutdown.static Stringstatic StringShutdown cluster singletonsstatic StringWait until exiting has been completedstatic StringEmit the leave command for the node that is shutting down.static StringGraceful shutdown of the Cluster Sharding regions.static StringShutdown the cluster extensionstatic StringWait for requests that are in progress to be completed.static StringFinal shutdown of service endpoints.static StringStop accepting new incoming requests in for example HTTP.scala.concurrent.Future<Done>run(CoordinatedShutdown.Reason reason) Scala API: Run tasks of all phases.run(CoordinatedShutdown.Reason reason, Optional<String> fromPhase) Java API: Run tasks of all phases including and after the given phase.scala.concurrent.Future<Done>run(CoordinatedShutdown.Reason reason, scala.Option<String> fromPhase) Scala API: Run tasks of all phases including and after the given phase.runAll(CoordinatedShutdown.Reason reason) Java API: Run tasks of all phases.scala.Option<CoordinatedShutdown.Reason>TheReasonfor the shutdown as passed to therunmethod.scala.concurrent.duration.FiniteDurationThe configured timeout for a givenphase.scala.concurrent.duration.FiniteDurationSum of timeouts of all phases that have some task.static CoordinatedShutdown.Reason
-
Method Details
-
PhaseBeforeServiceUnbind
-
PhaseServiceUnbind
Stop accepting new incoming requests in for example HTTP. -
PhaseServiceRequestsDone
Wait for requests that are in progress to be completed. -
PhaseServiceStop
Final shutdown of service endpoints. -
PhaseBeforeClusterShutdown
Phase for custom application tasks that are to be run after service shutdown and before cluster shutdown. -
PhaseClusterShardingShutdownRegion
Graceful shutdown of the Cluster Sharding regions. -
PhaseClusterLeave
Emit the leave command for the node that is shutting down. -
PhaseClusterExiting
Shutdown cluster singletons -
PhaseClusterExitingDone
Wait until exiting has been completed -
PhaseClusterShutdown
Shutdown the cluster extension -
PhaseBeforeActorSystemTerminate
Phase for custom application tasks that are to be run after cluster shutdown and before ActorSystem termination. -
PhaseActorSystemTerminate
Last phase. See terminate-actor-system and exit-jvm above. Don't add phases that depends on this phase because the dispatcher and scheduler of the ActorSystem have been shutdown. -
unknownReason
-
actorSystemTerminateReason
-
jvmExitReason
-
clusterDowningReason
-
clusterJoinUnsuccessfulReason
-
incompatibleConfigurationDetectedReason
-
clusterLeavingReason
-
get
-
get
-
lookup
-
createExtension
-
apply
-
apply
-
hashCode
public static final int hashCode() -
equals
-
addCancellableTask
public Cancellable addCancellableTask(String phase, String taskName, scala.Function0<scala.concurrent.Future<Done>> task) Scala API: Add a task to a phase, returning an object which will cancel it on demand and remove it from the task pool (so long as the same task has not been added elsewhere). Tasks in a phase are run concurrently, with no ordering assumed.Adding a task to a phase does not remove any other tasks from the phase.
If the same task is added multiple times, each addition will be run unless cancelled.
Tasks should typically be registered as early as possible -- once coordinated shutdown begins, tasks may be added without ever being run. A task may add tasks to a later stage with confidence that they will be run.
-
addCancellableTask
public Cancellable addCancellableTask(String phase, String taskName, Supplier<CompletionStage<Done>> task) Java API: Add a task to a phase, returning an object which will cancel it on demand and remove it from the task pool (so long as the same task has not been added elsewhere). Tasks in a phase are run concurrently, with no ordering assumed.Adding a task to a phase does not remove any other tasks from the phase.
If the same task is added multiple times, each addition will be run unless cancelled.
Tasks should typically be registered as early as possible -- once coordinated shutdown begins, tasks may be added without ever being run. A task may add tasks to a later stage with confidence that they will be run.
-
addTask
public void addTask(String phase, String taskName, scala.Function0<scala.concurrent.Future<Done>> task) Scala API: Add a task to a phase. It doesn't remove previously added tasks. Tasks added to the same phase are executed in parallel without any ordering assumptions. Next phase will not start until all tasks of previous phase have been completed.Tasks should typically be registered as early as possible after system startup. When running the coordinated shutdown tasks that have been registered will be performed but tasks that are added too late will not be run. It is possible to add a task to a later phase by a task in an earlier phase and it will be performed.
-
addTask
Java API: Add a task to a phase. It doesn't remove previously added tasks. Tasks added to the same phase are executed in parallel without any ordering assumptions. Next phase will not start until all tasks of previous phase have been completed.Tasks should typically be registered as early as possible after system startup. When running the coordinated shutdown tasks that have been registered will be performed but tasks that are added too late will not be run. It is possible to add a task to a later phase by a task in an earlier phase and it will be performed.
-
addActorTerminationTask
public void addActorTerminationTask(String phase, String taskName, ActorRef actor, scala.Option<Object> stopMsg) Scala API: Add an actor termination task to a phase. It doesn't remove previously added tasks. Tasks added to the same phase are executed in parallel without any ordering assumptions. Next phase will not start until all tasks of previous phase have been completed.When executed, this task will first send the given stop message, if defined, to the actor, then it will watch the actor, and complete when the actor terminates.
Tasks should typically be registered as early as possible after system startup. When running the coordinated shutdown tasks that have been registered will be performed but tasks that are added too late will not be run. It is possible to add a task to a later phase by a task in an earlier phase and it will be performed.
-
addActorTerminationTask
public void addActorTerminationTask(String phase, String taskName, ActorRef actor, Optional<Object> stopMsg) Java API: Add an actor termination task to a phase. It doesn't remove previously added tasks. Tasks added to the same phase are executed in parallel without any ordering assumptions. Next phase will not start until all tasks of previous phase have been completed.When executed, this task will first send the given stop message, if defined, to the actor, then it will watch the actor, and complete when the actor terminates.
Tasks should typically be registered as early as possible after system startup. When running the coordinated shutdown tasks that have been registered will be performed but tasks that are added too late will not be run. It is possible to add a task to a later phase by a task in an earlier phase and it will be performed.
-
shutdownReason
TheReasonfor the shutdown as passed to therunmethod.Noneif the shutdown has not been started. -
getShutdownReason
TheReasonfor the shutdown as passed to therunmethod.Optional.emptyif the shutdown has not been started. -
run
Scala API: Run tasks of all phases. The returnedFutureis completed when all tasks have been completed, or there is a failure when recovery is disabled.It's safe to call this method multiple times. It will only run the shutdown sequence once.
-
runAll
Java API: Run tasks of all phases. The returnedCompletionStageis completed when all tasks have been completed, or there is a failure when recovery is disabled.It's safe to call this method multiple times. It will only run the shutdown sequence once.
-
run
public scala.concurrent.Future<Done> run(CoordinatedShutdown.Reason reason, scala.Option<String> fromPhase) Scala API: Run tasks of all phases including and after the given phase. The returnedFutureis completed when all such tasks have been completed, or there is a failure when recovery is disabled.It's safe to call this method multiple times. It will only run shutdown sequence once.
-
run
Java API: Run tasks of all phases including and after the given phase. The returnedCompletionStageis completed when all such tasks have been completed, or there is a failure when recovery is disabled.It's safe to call this method multiple times. It will only run the shutdown sequence once.
-
timeout
The configured timeout for a givenphase. For example useful as timeout when actoraskrequests is used as a task. -
totalTimeout
public scala.concurrent.duration.FiniteDuration totalTimeout()Sum of timeouts of all phases that have some task. -
addJvmShutdownHook
public <T> void addJvmShutdownHook(scala.Function0<T> hook) Scala API: Add a JVM shutdown hook that will be run when the JVM process begins its shutdown sequence. Added hooks may run in any order concurrently, but they are running before Pekko internal shutdown hooks, e.g. those shutting down Artery. -
addCancellableJvmShutdownHook
Scala API: Add a JVM shutdown hook that will be run when the JVM process begins its shutdown sequence. Added hooks may run in any order concurrently, but they are running before Pekko internal shutdown hooks, e.g. those shutting down Artery.The returned
Cancellablemakes it possible to de-register the hook. For example on actor system shutdown to avoid leaking references to the actor system in tests.For shutdown hooks that does not have any requirements on running before the Akka shutdown hooks the standard library JVM shutdown hooks APIs are better suited.
-
addJvmShutdownHook
Java API: Add a JVM shutdown hook that will be run when the JVM process begins its shutdown sequence. Added hooks may run in any order concurrently, but they are running before Pekko internal shutdown hooks, e.g. those shutting down Artery. -
addCancellableJvmShutdownHook
Java API: Add a JVM shutdown hook that will be run when the JVM process begins its shutdown sequence. Added hooks may run in an order concurrently, but they are running before Pekko internal shutdown hooks, e.g. those shutting down Artery.The returned
Cancellablemakes it possible to de-register the hook. For example on actor system shutdown to avoid leaking references to the actor system in tests.For shutdown hooks that does not have any requirements on running before the Akka shutdown hooks the standard library JVM shutdown hooks APIs are better suited.
-