Package akka.cluster

Class DowningProvider

  • Direct Known Subclasses:
    NoDowning, SplitBrainResolverProvider

    public abstract class DowningProvider
    extends java.lang.Object
    API for plugins that will handle downing of cluster nodes. Concrete plugins must subclass and have a public one argument constructor accepting an ActorSystem.

    A custom DowningProvider can be configured with akka.cluster.downing-provider-class

    When implementing a downing provider you should make sure that it will not split the cluster into several separate clusters in case of network problems or system overload (long GC pauses). This is much more difficult than it might be perceived at first, so carefully read the concerns and scenarios described in https://doc.akka.io/docs/akka/current/split-brain-resolver.html

    • Constructor Summary

      Constructors 
      Constructor Description
      DowningProvider()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract scala.Option<Props> downingActorProps()
      If a props is returned it is created as a child of the core cluster daemon on cluster startup.
      abstract scala.concurrent.duration.FiniteDuration downRemovalMargin()
      Time margin after which shards or singletons that belonged to a downed/removed partition are created in surviving partition.
      static DowningProvider load​(java.lang.String fqcn, ActorSystem system)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DowningProvider

        public DowningProvider()
    • Method Detail

      • load

        public static DowningProvider load​(java.lang.String fqcn,
                                           ActorSystem system)
        Parameters:
        fqcn - Fully qualified class name of the implementation to be loaded.
        system - Actor system used to load the implemntation
        Returns:
        the provider or throws a ConfigurationException if loading it fails
      • downRemovalMargin

        public abstract scala.concurrent.duration.FiniteDuration downRemovalMargin()
        Time margin after which shards or singletons that belonged to a downed/removed partition are created in surviving partition. The purpose of this margin is that in case of a network partition the persistent actors in the non-surviving partitions must be stopped before corresponding persistent actors are started somewhere else. This is useful if you implement downing strategies that handle network partitions, e.g. by keeping the larger side of the partition and shutting down the smaller side.
      • downingActorProps

        public abstract scala.Option<Props> downingActorProps()
        If a props is returned it is created as a child of the core cluster daemon on cluster startup. It should then handle downing using the regular Cluster APIs. The actor will run on the same dispatcher as the cluster actor if dispatcher not configured.

        May throw an exception which will then immediately lead to Cluster stopping, as the downing provider is vital to a working cluster.