diff --git a/src/core/Akka.Cluster/ClusterDaemon.cs b/src/core/Akka.Cluster/ClusterDaemon.cs index 188bfe4f0b2..4dc9c27eb7d 100644 --- a/src/core/Akka.Cluster/ClusterDaemon.cs +++ b/src/core/Akka.Cluster/ClusterDaemon.cs @@ -895,7 +895,7 @@ private void CreateChildren(Cluster cluster) _cluster = cluster; _coreSupervisor = Context.ActorOf(Props.Create(), "core"); - Context.ActorOf(ClusterHeartbeatReceiver.Props(() => _cluster), "heartbeatReceiver"); + Context.ActorOf(ClusterHeartbeatReceiver.Props(cluster), "heartbeatReceiver"); } protected override void PostStop() diff --git a/src/core/Akka.Cluster/ClusterHeartbeat.cs b/src/core/Akka.Cluster/ClusterHeartbeat.cs index a511b68d875..a05754215d3 100644 --- a/src/core/Akka.Cluster/ClusterHeartbeat.cs +++ b/src/core/Akka.Cluster/ClusterHeartbeat.cs @@ -26,16 +26,16 @@ internal sealed class ClusterHeartbeatReceiver : UntypedActor { // Important - don't use Cluster.Get(Context.System) in constructor because that would // cause deadlock. See startup sequence in ClusterDaemon. - private readonly Lazy _cluster; + private readonly Cluster _cluster; - public bool VerboseHeartbeat => _cluster.Value.Settings.VerboseHeartbeatLogging; + public bool VerboseHeartbeat => _cluster.Settings.VerboseHeartbeatLogging; /// /// TBD /// - public ClusterHeartbeatReceiver(Func getCluster) + public ClusterHeartbeatReceiver(Cluster cluster) { - _cluster = new Lazy(getCluster); + _cluster = cluster; } protected override void OnReceive(object message) @@ -44,8 +44,8 @@ protected override void OnReceive(object message) { case ClusterHeartbeatSender.Heartbeat hb: // TODO log the sequence nr once serializer is enabled - if(VerboseHeartbeat) _cluster.Value.CurrentInfoLogger.LogDebug("Heartbeat from [{0}]", hb.From); - Sender.Tell(new ClusterHeartbeatSender.HeartbeatRsp(_cluster.Value.SelfUniqueAddress, + if(VerboseHeartbeat) _cluster.CurrentInfoLogger.LogDebug("Heartbeat from [{0}]", hb.From); + Sender.Tell(new ClusterHeartbeatSender.HeartbeatRsp(_cluster.SelfUniqueAddress, hb.SequenceNr, hb.CreationTimeNanos)); break; default: @@ -54,7 +54,7 @@ protected override void OnReceive(object message) } } - public static Props Props(Func getCluster) + public static Props Props(Cluster getCluster) { return Akka.Actor.Props.Create(() => new ClusterHeartbeatReceiver(getCluster)); }