=clu #23229 multi-dc heartbeating, only N nodes perform monitoring

This commit is contained in:
Konrad `ktoso` Malawski 2017-07-07 13:17:41 +02:00 committed by Johan Andrén
parent b3c372eada
commit b568975acc
8 changed files with 574 additions and 27 deletions

View file

@ -10,6 +10,7 @@ import java.util.concurrent.atomic.AtomicBoolean
import akka.ConfigurationException
import akka.actor._
import akka.cluster.ClusterSettings.DataCenter
import akka.dispatch.MonitorableThreadFactory
import akka.event.{ Logging, LoggingAdapter }
import akka.japi.Util
@ -77,6 +78,9 @@ class Cluster(val system: ExtendedActorSystem) extends Extension {
*/
def selfAddress: Address = selfUniqueAddress.address
/** Data center to which this node belongs to (defaults to "default" if not configured explicitly) */
def selfDataCenter: DataCenter = settings.DataCenter
/**
* roles that this member has
*/
@ -96,10 +100,17 @@ class Cluster(val system: ExtendedActorSystem) extends Extension {
logInfo("Starting up...")
val failureDetector: FailureDetectorRegistry[Address] = {
def createFailureDetector(): FailureDetector =
val createFailureDetector = ()
FailureDetectorLoader.load(settings.FailureDetectorImplementationClass, settings.FailureDetectorConfig, system)
new DefaultFailureDetectorRegistry(() createFailureDetector())
new DefaultFailureDetectorRegistry(createFailureDetector)
}
val crossDcFailureDetector: FailureDetectorRegistry[Address] = {
val createFailureDetector = ()
FailureDetectorLoader.load(settings.CrossDcFailureDetectorSettings.ImplementationClass, settings.CrossDcFailureDetectorSettings.config, system)
new DefaultFailureDetectorRegistry(createFailureDetector)
}
// needs to be lazy to allow downing provider impls to access Cluster (if not we get deadlock)
@ -411,7 +422,7 @@ class Cluster(val system: ExtendedActorSystem) extends Extension {
private def closeScheduler(): Unit = scheduler match {
case x: Closeable x.close()
case _
case _ // ignore, this is fine
}
/**