Class

akka.management.cluster.bootstrap.dns

HeadlessServiceDnsBootstrap

Related Doc: package dns

Permalink

final class HeadlessServiceDnsBootstrap extends Actor with ActorLogging with Timers

Looks up members of the same "service" in DNS and initiates HttpContactPointBootstrap's for each such node. If any of the contact-points returns a list of seed nodes it joins them immediately.

If contact points do not return any seed-nodes for a contactPointNoSeedsStableMargin amount of time, we decide that apparently there is no cluster formed yet in this deployment and someone as to become the first node to join itself (becoming the first node of the cluster, that all other nodes will join).

The decision of joining "self" is made by deterministically sorting the discovered service IPs and picking the *lowest* address.

If this node is the one with the lowest address in the deployment, it will join itself and other nodes will notice this via the contact-point probing mechanism and join this node. Please note while the cluster is "growing" more nodes become aware of the cluster and start returning the seed-nodes in their contact-points, thus the joining process becomes somewhat "epidemic". Other nodes may get to know about this cluster by contacting any other node that has joined it already, and they may join any seed-node that they retrieve using this method, as effectively this will mean it joins the "right" cluster.

CAVEATS: There is a slight timing issue, that may theoretically appear in this bootstrap process. FIXME explain the races

Linear Supertypes
Timers, ActorLogging, Actor, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. HeadlessServiceDnsBootstrap
  2. Timers
  3. ActorLogging
  4. Actor
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new HeadlessServiceDnsBootstrap(discovery: SimpleServiceDiscovery, settings: ClusterBootstrapSettings)

    Permalink

Type Members

  1. type Receive = PartialFunction[Any, Unit]

    Permalink
    Definition Classes
    Actor

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def aroundPostRestart(reason: Throwable): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
    Annotations
    @InternalApi()
  5. def aroundPostStop(): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Timers → Actor
  6. def aroundPreRestart(reason: Throwable, message: Option[Any]): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Timers → Actor
  7. def aroundPreStart(): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
    Annotations
    @InternalApi()
  8. def aroundReceive(receive: actor.Actor.Receive, msg: Any): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Timers → Actor
  9. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  10. def bootstraping(serviceName: String, replyTo: ActorRef): Receive

    Permalink

    In process of searching for seed-nodes

  11. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  12. implicit val context: ActorContext

    Permalink
    Definition Classes
    Actor
  13. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  14. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  15. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  16. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  17. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  18. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  19. def log: LoggingAdapter

    Permalink
    Definition Classes
    ActorLogging
  20. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  21. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  22. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  23. def postRestart(reason: Throwable): Unit

    Permalink
    Definition Classes
    Actor
    Annotations
    @throws( classOf[java.lang.Exception] )
  24. def postStop(): Unit

    Permalink
    Definition Classes
    Actor
    Annotations
    @throws( classOf[java.lang.Exception] )
  25. def preRestart(reason: Throwable, message: Option[Any]): Unit

    Permalink
    Definition Classes
    Actor
    Annotations
    @throws( classOf[java.lang.Exception] )
  26. def preStart(): Unit

    Permalink
    Definition Classes
    Actor
    Annotations
    @throws( classOf[java.lang.Exception] )
  27. def receive: Receive

    Permalink

    Awaiting initial signal to start the bootstrap process

    Awaiting initial signal to start the bootstrap process

    Definition Classes
    HeadlessServiceDnsBootstrap → Actor
  28. implicit final val self: ActorRef

    Permalink
    Definition Classes
    Actor
  29. final def sender(): ActorRef

    Permalink
    Definition Classes
    Actor
  30. def supervisorStrategy: SupervisorStrategy

    Permalink
    Definition Classes
    Actor
  31. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  32. def timeNow(): Long

    Permalink
    Attributes
    protected
  33. final def timers: TimerScheduler

    Permalink
    Definition Classes
    Timers
  34. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  35. def unhandled(message: Any): Unit

    Permalink
    Definition Classes
    Actor
  36. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  37. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  38. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Timers

Inherited from ActorLogging

Inherited from Actor

Inherited from AnyRef

Inherited from Any

Ungrouped